2013年3月19日火曜日

ASP.NET 4.0 IE10 で '__doPostBack' は定義されていません。

ASP.NET 4.0 、IE9、IIS 7で開発途中、IE10がWindows Update更新対象になったので、バージョンを上げてみました。
そしたら作成していたウェブアプリケーションがポストバックのたびにエラーで止まるようになりました。

ユーザー エージェント: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)タイムスタンプ: Fri, 15 Mar 2013 07:41:06 UTC
__doPostBack' は定義されていません。

そんな!!

ASP.NET 4.0だとIE10の検出がデフォルトでサポートされておらず、パッチをあててIE10用のユーザーエージェント文字列を出力する必要がありました。

ASP.NET が Internet Explorer 10 の検出に失敗する
http://msdn.microsoft.com/ja-jp/library/ie/hh869299(v=vs.85).aspx

Internet Explorer 10 のユーザー エージェント文字列
http://msdn.microsoft.com/ja-jp/library/ie/hh869301(v=vs.85).aspx

Microsoft.NET Framework 4.0 で ASP.NET ブラウザー定義ファイルの修正プログラムが利用可能です。
http://support.microsoft.com/kb/2600088/ja

一番下のリンクから修正パッチを請求してローカルの開発環境とサーバの両方にインストールすれば正常に動くようになります。
IE9以下ではエラーにならないので発覚しづらいのですが、これはかなり致命的です。

ついでにVisual Studio 2010でのデバッグでも、IE10にあげたら、「コンピュータ 'コンピュータ名' 上のプロセス [プロセスID] iexplore.exeにスクリプトデバッガーをアタッチできませんでした。デバッガーは既にアタッチされています。」というエラーを吐くようになりました。
デバッグ自体は動いているのですが、いちいち警告がポップアップされるのでちょっと邪魔。
これの対応も手間取りました。別項で。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。