Webシステム開発はお任せください

↑Topへ

開発ブログ

IE11のブラウザでasp.netで不具合(2013/10/30)

IE11のブラウザでasp.netで不具合がまたもや発生

【状況】

ログイン処理でIE以外のブラウザとIE8未満のブラウザの場合、エラー画面を表示させていたが、IE11の場合IEと見なされずにエラー画面が表示されてログインできないようになりました。

 

【発生環境】

Windows2008Server + asp.net + Internet Explorer11

 

asp.netのプログラム内で下記のようなチェックを行っていたのですが、なんとRequest.Browser.Browserで返される値が'IE'ではなくて

'Mozilla'が返されるようになっているではないですか。

Dim browser As String = Request.Browser.Browser
Dim major As Integer = Request.Browser.MajorVersion()

'ログ出力処理
Dim log As Log = log.getInstance
'ブラウザの確認を行いIE8以上で無ければエラー画面にリダイレクトを行う
If browser <> "IE" Then    ←★ この判定でIE10以下は'IE'と返されるがIE11だと'Mozilla'が返される ★
        log.OutputLog(enmLogLevel.ERR, CNS_FRAMEWORK_ERR_MESSAGE_010 & String.Format(" browser:{0}", browser))
  Response.Redirect(SESSION_BROWSER_ERR_PAGE, True)
Else
 If major < 8 Then
     log.OutputLog(enmLogLevel.ERR, CNS_FRAMEWORK_ERR_MESSAGE_010 & String.Format(" major:{0}", major))
  Response.Redirect(SESSION_BROWSER_ERR_PAGE, True)
 End If
End If

 

いままでIEのユーザエージェント文字列は

 

【IE8】

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)

 

【IE9】

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

 

【IE10】

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)

だったのですが

 

【IE11】

Mozilla/5.0 (IE 11.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko

 

というように'MSIE'から'IE'に変わってしまっています。

表示系コントロールで自動付加されるhtmlタグ(2013/10/16)

asp.netには以下の表示系コントロールがありますが、実行時それぞれのhtmlタグが自動的に付加されます。CSSやjavascriptなどを生成する場合、自動的にhtmlタグが付加されてしまうと不都合な場合があります。その場合、 literalコントロールを使用します。

コントロール 自動付加されるhtmlタグ
labelコントロール span
panelコントロール div
placeholderコントロール 何も付加されない
literalコントロール 何も付加されない

HtmlGenericControl は、特定の HTML サーバー コントロールによって直接表されないすべての未知の HTML サーバー コントロール タグ (spandivbodyなど) に対応して、ASP.NET サーバー コントロールを実装します。

 

 

実装方法ですが、例えばdivを定義する場合、

 

というようにサーバコントロールとして定義します。

サーバサイドでこのdiv要素はHtmlGenericControlクラスとして生成されます。

HtmlGenericControlはプロパティとしてinnerHtmlを実装していますので、このプロパティにHTMLを設定すればサーバサイドでもHTMLの出力が可能となります。