ASP.NET パーサーエラーについて

 

「パーサー エラー: あいまいな一致が見つかりました。」

 

このエラーメッセージが出た場合は、

画面の(.aspx)ファイルに設置しているコントロールIDと

ビジネスロジッククラス(.cs)の中で宣言しているオブジェクトの名称が、

重複していないかチェックする。

 

注意点として、

大文字小文字の区別なく、

画面とビジネスロジックで名称が重複している場合はアウトということ。

具体例として以下の場合はアウトなケース。

 

「hoge.aspx」

  <asp:TextBox id="UserID"  Text=""  runat="server" />

「hoge.cs」

  private string userId;

 

C#の場合大文字小文字は区別されるため、

一見すると上記の場合はOKのように見えるが、

実際にはパーサーエラーが発生する。

(.aspxはUnicodeで扱われていない?)

 

しかもめんどくさいことに、

私の場合、個人の開発環境ではパーサーエラーが発生せず、

テスト用のアプリケーションサーバーにデプロイした時に初めて発生したため、

対応に時間がかかってしまった。

(毎回毎回デプロイしないと確認できないため。)

 

ちなみに、画面のコントロールIDとロジックのオブジェクトに名称重複が、

見られないにもかかわらず、エラーが発生している場合は、

別の原因でパーサーエラーが発生していることが考えられるのでご注意を。

※例えばGetMethodメソッドで呼ぼうとしているメソッドがオーバーロードされている時とか。