トップ回答者
Webパーツのパーソナル化について IE11 .Net4.5

質問
-
Webパーツのパーソナル化をして実装したものが、IE11上でパーツの移動ができないことについて
以下、現象が起きた環境です。
・.NetのFrameworkは4.5です。 ・OSはWindows8.1です。 ・SDK:VisualStudio2013です。 手前で調査したところ、.NET4.0にはKB(http://support.microsoft.com/kb/2600088)があるようですが、
.NET4.5に相当するKBが見当たりません。
一応、F12キーで開発者ツールを開き、エミュレーションのドキュメントモード、ユーザーエージェント文字列をIE8にすると Webパーツの移動は確認できましたが、IE11で対応できる方法が知りたいのです。
どなたかわかる方、お知恵を貸して下さい。
回答
-
参考にされている KB は ASP.NET による IE10 の判定の誤りの修正の話ですが、そのことは理解されているでしょうか?
簡単に言うと、IE10 がリリースされた直後に、IE10 で ASP.NET ページにアクセスすると __doPostBack() などが定義されてないというスクリプトエラーが出たということがありました。この原因は、IE10 のリリース直後にはまだ ASP.NET に IE10 のブラウザ定義がなかったからです。その後、hotfix や Windows Update で IE10 のブラウザ定義が追加され、問題が解消されたという経緯があるということです。
詳しくは以下のページを見てください。
ASP.NET の IE10 対応について
http://blogs.msdn.com/b/d99/archive/2013/08/02/10438994.aspxIE11 でも同様な問題がありましたが、これも Windows Update で解決されているはずです。
参考にされている KB は上で紹介したページで言うと解決策 1 の hotfix らしいですが、これを適用せずとも、Windows Update がきちんと行われていればすでに解決済みのはすです。
もし、解決されてなければ、上に紹介したページにも書いてあるように hotfix を当てるのはいろいろ問題があるので、Windows Update で対応することをお勧めします。
ただし、すでに修正済みかもしれませんので、HttpBrowserCapabilities オブジェクトを取得してその中身を見て、現在のブラウザ判定がどのようになっているか調べることをお勧めします。
HttpBrowserCapabilities クラス
http://msdn.microsoft.com/ja-jp/library/system.web.httpbrowsercapabilities(v=vs.110).aspx
なお、「パーツの移動ができない」という原因がブラウザ判定の間違いによるものかどうかまでは自分は調べてません。(そのあたりは質問者さんが、ブラウザ判定の間違いが原因であると調べた上で質問されていると理解します)- 回答としてマーク 星 睦美 2014年12月9日 2:06
すべての返信
-
参考にされている KB は ASP.NET による IE10 の判定の誤りの修正の話ですが、そのことは理解されているでしょうか?
簡単に言うと、IE10 がリリースされた直後に、IE10 で ASP.NET ページにアクセスすると __doPostBack() などが定義されてないというスクリプトエラーが出たということがありました。この原因は、IE10 のリリース直後にはまだ ASP.NET に IE10 のブラウザ定義がなかったからです。その後、hotfix や Windows Update で IE10 のブラウザ定義が追加され、問題が解消されたという経緯があるということです。
詳しくは以下のページを見てください。
ASP.NET の IE10 対応について
http://blogs.msdn.com/b/d99/archive/2013/08/02/10438994.aspxIE11 でも同様な問題がありましたが、これも Windows Update で解決されているはずです。
参考にされている KB は上で紹介したページで言うと解決策 1 の hotfix らしいですが、これを適用せずとも、Windows Update がきちんと行われていればすでに解決済みのはすです。
もし、解決されてなければ、上に紹介したページにも書いてあるように hotfix を当てるのはいろいろ問題があるので、Windows Update で対応することをお勧めします。
ただし、すでに修正済みかもしれませんので、HttpBrowserCapabilities オブジェクトを取得してその中身を見て、現在のブラウザ判定がどのようになっているか調べることをお勧めします。
HttpBrowserCapabilities クラス
http://msdn.microsoft.com/ja-jp/library/system.web.httpbrowsercapabilities(v=vs.110).aspx
なお、「パーツの移動ができない」という原因がブラウザ判定の間違いによるものかどうかまでは自分は調べてません。(そのあたりは質問者さんが、ブラウザ判定の間違いが原因であると調べた上で質問されていると理解します)- 回答としてマーク 星 睦美 2014年12月9日 2:06
-
【追伸】
先のレスで、
> HttpBrowserCapabilities オブジェクトを取得してその中身を見て、現在の
> ブラウザ判定がどのようになっているか調べることをお勧めします。と書きましたが、その具体的な方法が書かれたページがありましたので、ご参考に連絡しておきます。
方法 : ASP.NET Web ページでブラウザの種類を検出する
http://msdn.microsoft.com/ja-jp/library/3yekbd5b(v=vs.100).aspx
改修方法ですが、もし、Windows Update はかけたくない、ブラウザ判定だけ解決すればすべて OK ということであれば、先に提示したページ「ASP.NET の IE10 対応について」に書いてある対処方法 4 「アプリケーションに IE10 対応のブラウザ定義を加える」がいいと思います。 -
IE11 を使っている場合、最初の質問にあった、
> F12キーで開発者ツールを開き、...、ユーザーエージェント文字列をIE8にする
という操作によって、ブラウザから Web サーバー送信される要求ヘッダ内の User-Agent: xxx の xxx が、
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
から、
Mozilla/4.0 (Windows; MSIE 8.0; Windows NT 6.0)
に変わりませんか?(Fiddler2 などのキャプチャツールを使うと調べられます)
それにより「Webパーツの移動は確認できました」ということであれば、IE8 であるというブラウザ判定が正しく行われ、その結果 Web パーツの移動に必要なクライアントスクリプト等が Web サーバーからブラウザに送信されたということだと思うのですが。
> 当方のPCはWindowsアップデートは最新の状態でありますので、
ということですと、IE11 の User-Agent で正しくブラウザ判定ができないというのは解せないですが、とにかく前のレスで紹介した以下の記事のコードを実装したページを作って、IE11 のブラウザ判定が正しく行われているかを確認してはいかがですか?
方法 : ASP.NET Web ページでブラウザの種類を検出する
http://msdn.microsoft.com/ja-jp/library/3yekbd5b(v=vs.100).aspxASP.NET が IE11 のブラウザ定義を持ってないと downlevel と判定されるはずです。