2008-09-17 94 views
5

これは私を夢中にさせます。私はasp.net webappを持っています。かなり簡単で、.aspx.vbのほとんどのコードと、App_Codeのいくつかのクラスです。エラーBC30002 - タイプXXXが定義されていません

エラーBC30002:

今日だけ発生し始めている問題は、(コードのほとんどが既に書かれていたにもかかわらず)、たまに、私はこのエラーメッセージを持っているということですタイプ " XXX 'が定義されていません

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

何かに触れることなくちょっと待ってから、ページをリフレッシュしても機能しますが、非常に面倒です。

私は少しだけ検索しましたが、インポートが不足していることを除いて何も表示されませんでした。何か案が ?

答えて

4

問題が見つかりました。

私のコードは、そのようなものだった:

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 

そして今、それが動作する...

4

特に、エラーが発生してから待って消えてしまうと言われているので、プリコンパイルの問題のような音がします。 ASP.NETは、アプリケーションを動的にコンパイルしている途中にいる場合や、異なるアセンブリに型をコンパイルしている場合があります。

ダイナミックコンパイルでは、同じアセンブリに異なるコードビハインドファイルをコンパイルすることはできません。したがって、参照している型がプリコンパイルされたアセンブリ内で解決できないことがあります。

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

@ Reference - MSDN

0

それはウェブサイトがスピンアップ(アプリは、あなたがにApp_Codeに触れると、おそらくあなたが非アクティブのX分後にウェブサイトをシャットダウンするように構成されたIISを持つたびに再利用されます)たびに起こるような音。

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

Check this linkおよび表19.3に、ワーカープロセスアカウントが機能するためにアクセスする必要があるすべてのフォルダの一覧を示します。また、仮想ディレクトリ内のすべてのファイルとフォルダにその権利を与えることを忘れないでください!

0

これは私に起こりました。他の「古い」プロジェクトと一致するようにTargetフレームワークを下げました。エラーがなくなりました。

関連する問題