2009-03-31 15 views
0

asp.netを使用すると、この断続的な問題が発生しました。私のサイトは動的にコンパイルされています。時には私がユーザコントロールを変更すると、私のウェブサイトはそれが複数の場所で定義されていると不平を言います。ほとんどの場合、古いコントロールがasp.netの一時ファイルから削除されず、更新されたコントロールが同じディレクトリにコンパイルされるので、複数の場所で定義されているようです。それはTemporary ASP.net Filesフォルダに何があるのか​​を私が制御できないという事実を除いて、私には意味をなさないでしょう。asp.net someusercontrol_ascxは複数の場所で定義されていますエラー

私は、循環参照があるとこれが発生することを読んだことがあります。私は循環参照がないことを確認しました。最も簡単なサイトでも、私はこれが起こったことを見てきました。

マスターページを使用しているときに、このエラーが頻繁に発生するようです。

修正プログラムがこの問題を修正しようとしましたが、この修正プログラムを適用した後にこのエラーが発生しています。

問題の原因となったファイルを取得して編集した場合、エラーは消えます。ファイルにスペースを入れても、エラーは解決されます。

また、ユーザーコントロールを使用していない可能性のある他のページを訪問してリフレッシュするとエラーが発生することがあります。これは必ずしも機能しません。

エラーをデバッグするサイトを設定しても、このようなことは起こりません。私がそれを設定して、それがページ単位でページ上に浮かぶようにすると、エラーはそれほど起こりませんが、それでも起こります。

以下は、エラーのようです。

コンパイルエラー 説明:この要求を処理するために必要なリソース のコンパイル中にエラーが発生しました。 次の特定のエラーの詳細を確認し、 ソースコードを適切に変更してください。

コンパイラエラーメッセージ:CS1595: '_ASP.Header_ascx' は複数の場所で定義されています。定義 を使用して 'C:\ WINNT \ Microsoft.NET \ Frameworkの\ v1.0.3705と一時 ASP.NETファイル\ルート\ \ afwew23d \ asdfasd423 \ asdf23.dll'

編集: は、私は.NETを使用しています上記のエラーが1.0であっても、2.0(3.5)です。毎回問題を再現できないため、別のソースからエラーが発生しました。しかし、エラーのタイプは同じです。

編集2: あなたの研究に感謝のgisresearch。

debug = falseを指定しても注意してください。あなたが入ってaspxページのいずれかで何かを変更すると、このページは再コンパイルする必要があります。これはappdomainのリロードを引き起こさないので、アプリケーション全体が再度バッチコンパイルされません。これは、ページが別々に再コンパイルされ、独自のdllを取得するようになるため、ライブサーバー上のaspxページをあまり頻繁に変更しないでください。

appドメインが再起動される前に再構成可能な再コンパイルの数を決定する設定がmachine.configにあります。デフォルトでは15に設定されているため、15回の再コンパイル後にアプリドメインが再起動します。 web.configを実行するか、binディレクトリに移動します。

これは、debug = falseで、サイトが既に訪問されてコンパイルされている場合、ページを変更すると、その1ページのみをコンパイルすることになります。それは問題を引き起こす可能性があるように聞こえる。私は、ページやユーザーコントロールを変更するとアプリケーション全体が再コンパイルされると思っていました。

+0

本当にv1.0を実行していますか?もしそうなら、それはほぼ9歳です。少なくともv1.1にアップグレードできますか?これが原因かもしれないのだろうか。 – andleer

+0

申し訳ありませんが、2.0(3.5)を使用しています。私はいつもこの問題を再現することができないので、別のソースからそのエラーが出ます。それはちょうど時々起こる。 – dtc

答えて

1

Webアプリケーションの別のフォルダに同じファイル名のユーザーコントロールが2つありますか? この問題が発生することがあります。

エラーをデバッグするサイトを設定した場合、 は発生しません。

debug = trueの場合、asp.netコンパイラはバッチコンパイルを行わず、debug = falseのときはバッチコンパイルを行い、この問題を引き起こす可能性があります。

The Read this post

同じ問題についての会話があります。私たちは、 エラーを取得しましたロビー・コールマンによってアプリケーションが生産されている場合...なぜ

はデバッグ=真である2006年4月24日(月曜日) 14:39:

再:ASP.NETメモリーUserControlの は、 FileName_ascxクラスをTemp ASP.NETフォルダ内の複数の バージョンが読み込めないことが報告されました。

同じWebアプリケーションの異なるフォルダに同じファイル名を持つ2人のユーザーがあることを確認しました。 また、 は、debug = "false"に設定されるまで、この例外を通過しないように異なる名前空間と を持っていました。 Temp ASP.NETディレクトリは、IISサーバーの IISresetできれいになりました。

エラーを修正できる唯一の方法は、 の2つの のascxファイルの名前を変更することでした。

これは正しいですか?これを修正するには、より良い の方法がありましたか?

はところで... [KissUpText]テスは、あなたの投稿 は、私たちの 開発チームに非常に有用だった、と私たちは本当に あなた が離れて与えているすべての情報に感謝します。 [/ KissUpText]

再:ASP.NETメモリ:アプリケーションが生産されている場合...なぜ

はテスこんにちはロビー、

によってデバッグ=真の2006年4月25日(火曜日) 1:56 AMであります素敵なコメントを

感謝:)

私はあなたが 「CS1595取得していると仮定しています: 『をUserControls.WebUserControl2』 が複数の場所で定義され、 「cから 定義を使用して:\ WINDOWS \ MICRのosoft.NET \ Framework \ v1.1.4322 \ Temporary ASP。NET ファイル\ユーザーコントロール\ 293a1a4b \ dbb2d387 \ cisxatg3.dll」 」または類似。

あなた はSRCを使用してではなく、分離コード とあなたのCSまたはVBファイルは正確にするために 定義が含まれている場合、問題は基本的にoccurrsまったく同じ名前空間内の同じクラス 。 エラーは本当にあなたが同じ名前空間に二回 定義されている別のクラスに DLLをコンパイルしようとした場合 はなるだろうものと同じである。

私が言っている理由あなたが CodeBehindを使用した場合、コンパイル時に にエラーが発生するため、srcを使用しています。

usercontrolsが実際に の場合は、 のコピーを作成せず、その代わりに のフォルダを使用します。彼らが異なっている場合、可能であれば、私は は異なる名前に を与えるだろうどちらか、そうでない場合、元のクラスは、このような ProjectName.FolderName.MyUserControl

として 異なる名前空間、あなたが見ている理由であることを確認し します現在は ではありません。 すべてを1つにまとめてコンパイルします dll。

これが役に立ちます。

+0

私はそれに言及するのを忘れてしまった。はい、私はこれを持っていますが、ascxファイルの先頭に異なる名前空間を持っています。例えば、それらは:Home_AboutUs_Controls_headerおよびHome_Portfolio_Controls_headerであってもよい。私は彼らが同じであれば、毎回エラーが起こると思います。 – dtc

+0

研究をいただきありがとうございます。あなたが提供したリンクには私が知らなかった興味深い声明がありました。私はもっ​​と多くのスペースをここでコメントしたいと思います。上記の質問を答えのように見えてください。 – dtc

関連する問題