2

次のように2つのファイルがあるWebサイトがあります。

  • page.aspx
  • page.aspx.cs

以前は、新しいファイルをWebサーバーにドロップするだけで、IISがファイルを自動的にコンパイルし、ページにアクセスできました。

http://www.website.com/page.aspx

...そして.csファイルに含まれるページクラスの関連機能はうまく機能します。

ページクラスを参照する「タイプnamespace.classnameを読み込めませんでした」というエラーが表示されます。

奇妙な理由で、すべての.csファイル(ページクラスも含む)をapp_codeフォルダーに配置する必要があります。

私のWebサイトで変更されたのは、構造を再編成して、ページがWebルート上にあるのではなく、http://.../newfolder/page.aspx内にあるようにしたことだけです。

何らかの理由で、すべてのpage.aspx.csファイルをapp_codeに含める必要があります。

何か案は?

4

1 に答える 1

2

WebアプリケーションプロジェクトとWebサイトを混同しているようです。

ファイルがまったく同じであると確信していますか?おそらく、1つの@PageディレクティブはCodeBehind = Page.aspx.csと言い、もう1つはCodeFile = Page.aspx.csと言いますか?

CodeBehindはプロジェクトのコンパイルを必要とするため、新しい.csファイルをドロップするだけではなく、コンパイルされた新しいDLLをアップロードする必要があります。CodeFileは動的コンパイルを可能にします。

App_Codeディレクトリは、アプリにアクセスすると動的にコンパイルされるため(どちらの場合も)、ファイルをそこに配置すると、Inheritディレクティブのタイプが有効になります。一般的に、これを行わないでください。.csファイルを.aspxファイルと一緒に使用する必要があります。特定のページに関連付けられていないビジネスロジックまたはユーティリティクラスには、App_Codeを使用します。

最後に、この新しいサブディレクトリはIISで新しいアプリとして設定されていますか?新しいディレクトリのweb.configファイルは何を変更しますか?同じバージョンのASP.NETを実行していますか?「コンパイル」タグを確認してください。これを引き起こすためにそこで何ができるかはわかりませんが、混乱を引き起こす可能性があると確信しています

于 2009-11-05T01:24:30.460 に答える