最近、私のチームはASP.NETプロジェクトを.NET 1.1から.NET 2.0に変換しました。これまでのところ、1つのWebページを除いて、すべてがかなり良好です。
これは、このページを開こうとしたときに表示されるエラーメッセージです。
「/」アプリケーションでのサーバーエラー。
パーサーエラーの説明:この要求を処理するために必要なリソースの解析中にエラーが発生しました。以下の特定の解析エラーの詳細を確認し、ソースファイルを適切に変更してください。
パーサーエラーメッセージ:あいまいな一致が見つかりました。
ソースエラー:
1行目:<%@ Control Language = "c#" AutoEventWireup = "false" Codebehind = "Template.ascx.cs" Inherits = "eReq.Web.WebControls.Template.Template" TargetSchema = "http://schemas.Microsoft。 com/intellisense/ie5 "%> 2行目:3行目:関数ExpandCollapse_Template(inBtn、inSection、inSectionID){
ソースファイル:/WebControls/Template/Template.ascx
ライン1-------------------------------------------------- ------------------------------バージョン情報:Microsoft .NET Frameworkバージョン:2.0.50727.3053; ASP.NETバージョン:2.0.50727.3053
クラスの名前を変更してファイル名を変更してみましたが、機能しませんでした。
誰かこれについて何か考えがありますか?
コンポーネントの名前が異なるために表示される可能性がありますか?たとえば、Button1とbutton1は、大文字と小文字を区別してコンパイルされますが、大文字と小文字を区別せずに実行されます。
ASCXファイルで、すべてのコントロールを調べ、そのIDを変更します。例えば、
<asp:TextBox id="foo" />
に変更
<asp:TextBox id="foo1" >
おそらく、ascxファイルのプロパティと一致するIDを持つコントロールがあるため、コンパイラーがインスタンス変数を衝突させようとしているとき。
私は同じ問題を抱えていて解決しましたが、解決策はコードの背後をチェックしており、同じ名前のコントロールがいくつか見つかります:
protected Button Home;
protected System.Web.UI.HtmlControls.HtmlAnchor home;
1行を削除するか、コメントにする必要があります。
選択した答えは正しいようです。
私の場合、大文字と小文字の使い方が異なるだけで、aspxファイルのコントロールと同じ名前の分離コード内の変数を使用していることがわかりました。
同じDLLへの1.1および2.0の参照についてweb.configをトロールします。私がこれを得たほとんどの場合、それはSystem.Web.Extensionsでした。
それが失敗した場合は、Pagesの@registersも確認してください。
頑張ってください(見つけるのは楽しいバグではありません!)
ダン