13

OK、これは私を夢中にさせ始めます。私はasp.net webappを持っています。ほとんどのコードは .aspx.vb にあり、いくつかのクラスは App_Code にあります。

(ほとんどのコードは既に作成されていますが) 今日だけ発生し始めた問題は、時々、次のエラー メッセージが表示されることです。

エラー BC30002: タイプ 'XXX' が定義されていません

App_Code フォルダー内のファイルを変更するたびにエラーが発生します。編集:OK、これは、しばらく何も触れずにページを更新した場合にも発生します。このエラーをトリガーする方法を正確に把握しようとしています。

何も触れずに少し待ってから、ページを更新すると機能しますが、非常に面倒です。

それで少し検索しましたが、インポートが見つからない以外は何も見つかりませんでした。何か案が ?

4

6 に答える 6

7

私は問題を見つけたと思います。

私のコードはそのようなものでした:

Imports CMS

Sub Whatever()
    Dim a as new Arbo.MyObject() ' Arbo is a namespace inside CMS
    Dim b as new Util.MyOtherObject() ' Util is a namespace inside Util
End Sub

なぜそのように書いたのかはわかりませんが、名前空間全体を呼び出さずに、または名前空間全体をインポートせずにクラスを呼び出していたことが、エラーを引き起こしていたことがわかりました。

私はそれをこのように書き直しました:

Imports CMS.Arbo
Imports CMS.Util 

Sub Whatever()
    Dim a as new MyObject()
    Dim b as new MyOtherObject()
End Sub

そして今それは動作します...

于 2008-10-01T10:01:10.243 に答える
5

特に、エラーが発生してから待機すると消えると述べているため、コンパイル前の問題のように聞こえます。ASP.NET は、まだアプリケーションを動的にコンパイル中か、型を別のアセンブリにコンパイルしている可能性があります。

動的コンパイルでは、異なる分離コード ファイルが同じアセンブリにコンパイルされる保証はありません。したがって、参照している型は、プリコンパイル済みアセンブリ内で解決できない場合があります。

"@Reference" ディレクティブを使用して、ページと型を含むファイルを同じアセンブリにコンパイルする必要があることをランタイムに示してみてください。

@参照 - MSDN

于 2008-09-17T16:57:41.237 に答える
2

コンパイラの警告 (Visual Studio の [出力] ウィンドウ) を確認してください。これは、DLL の 1 つが新しいバージョンの dotnet でコンパイルされている場合に発生します。現在のプロジェクトが下位バージョンの dotnet を使用するように設定されている場合、依存関係チェーンにより、(上位 dotnet バージョンの) dll の読み込みが妨げられます。Visual Studio ではコンパイル エラーが発生しますが、IIS では引き続き実行できます。

于 2021-03-10T16:31:26.150 に答える
0

Webサイトが起動するたびに発生するようです(app_codeに触れるたびにアプリがリサイクルされ、X分間非アクティブになった後にWebサイトをシャットダウンするようにIISが構成されている可能性があります)。

asp.netワーカープロセスがサーバー上で正しいアクセス権を持っていないことに関係しているに違いありません。そのため、アセンブリをロードしようとして拒否されています。

ワーカープロセスアカウントが機能するためにアクセスする必要のあるすべてのフォルダーのリストについては、このリンクと表19.3を確認してください。また、仮想ディレクトリ内のすべてのファイルとフォルダに対する権限を付与することを忘れないでください。

于 2008-09-17T17:07:46.470 に答える