12

私たちのプロジェクトでは、( onとの両方) のみで、によって出力されていないものがASP.Net 4.0あることに気付きました。IE 11Windows 7 SP1Windows 8.1JavaScriptASP.Net

たとえばIE 10、以下では、次のように表示されます。

<select name="ctl00$ctl00$cpHeading$cpHeading$ucWebStoreHeader$lshSubjectHeader$ddlVersionList" onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;ctl00$ctl00$cpHeading$cpHeading$ucWebStoreHeader$lshSubjectHeader$ddlVersionList\&#39;,\&#39;\&#39;)&#39;, 0)" id="ctl00_ctl00_cpHeading_cpHeading_ucWebStoreHeader_lshSubjectHeader_ddlVersionList">

滞在中IE 11

<select name="ctl00$ctl00$cpHeading$cpHeading$ucWebStoreHeader$lshSubjectHeader$ddlVersionList" id="ctl00_ctl00_cpHeading_cpHeading_ucWebStoreHeader_lshSubjectHeader_ddlVersionList">

以下を使用してこのスクリプトを設定しています。

Page.ClientScript.RegisterClientScriptBlock(GetType(), null, script, true);

これは、「MSIE」以外のユーザー エージェント文字列で.Net 4.0認識されるようにブラウザ定義ファイルが更新されていないためでしょうか?IE 11

私はその仮定に従い、Web アプリをホストするマシン上の Win 7 SP1 と Win Server 2008 R2 の両方に KB2836939 をインストールするという Scott Hanselman の提案を試みましたが、 Cの .browser ファイルの更新に気付きませんでした。 \Windows\Microsoft.NET\Framework64\v4.0.30319\Config\BrowsersまたはC:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers

そのため、私は自分の .browser ファイルを作成し、それを上記のフォルダーと AppBrowsers に配置しましたが、うまくいきませんでした (run aspnet_regbrowsers –i and iisreset)。フォルダーに配置したIE11.browserファイルの内容は次のとおりです。

<browsers>
<browser id="IE11" parentID="Mozilla">
<identification>
    <userAgent match="Trident/(?'layoutVersion'[7-9]|0*[1-9]\d+)(\.\d+)?;(.*;)?\s*rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)))" />
    <userAgent nonMatch="IEMobile" />
    <userAgent nonMatch="MSIE" />
</identification>    
<capabilities>
    <capability name="browser"              value="IE" />
    <capability name="layoutEngine"         value="Trident" />
    <capability name="layoutEngineVersion"  value="${layoutVersion}" />
    <capability name="extra"                value="${extra}" />
    <capability name="isColor"              value="true" />
    <capability name="majorversion"         value="${major}" />
    <capability name="minorversion"         value="${minor}" />
    <capability name="screenBitDepth"       value="8" />
    <capability name="type"                 value="IE${major}" />
    <capability name="version"              value="${version}" />
    <capability name="ecmascriptversion"    value="3.0" />
    <capability name="jscriptversion"                       value="6.0" />
    <capability name="javascript"           value="true" />
    <capability name="javascriptversion"    value="1.5" />
    <capability name="msdomversion"         value="${majorversion}.${minorversion}" />
    <capability name="w3cdomversion"        value="1.0" />
    <capability name="ExchangeOmaSupported" value="true" />
    <capability name="activexcontrols"      value="true" />
    <capability name="backgroundsounds"     value="true" />
    <capability name="cookies"              value="true" />
    <capability name="frames"               value="true" />
    <capability name="javaapplets"          value="true" />
    <capability name="supportsCallback"     value="true" />
    <capability name="supportsFileUpload"   value="true" />
    <capability name="supportsMultilineTextBoxDisplay" value="true" />
    <capability name="supportsMaintainScrollPositionOnPostback" value="true" />
    <capability name="supportsVCard"        value="true" />
    <capability name="supportsXmlHttp"      value="true" />
    <capability name="tables"               value="true" />
    <capability name="supportsAccessKeyAttribute"    value="true" />
    <capability name="tagwriter"            value="System.Web.UI.HtmlTextWriter" />
    <capability name="vbscript"             value="true" />
</capabilities>
</browser>
</browsers>

JavaScript が見つからないのは、IE 11 が .Net 4.0 で認識されないためだと考えていますか? はいの場合、.browser が有効にならないのはなぜですか?

みんなの時間と助けに感謝します。

4

3 に答える 3

12

Web サーバーに .Net 4.5 をインストールすると、問題が解決されました (Web アプリで 4.5 を使用する必要はありません)。これが、4.5がうまくいったと私が信じる理由です。

IE 11 には、以前のすべてのバージョンの IE とは異なり、"MSIE" を含まないユーザー エージェント (UA) 文字列があります。IE 11 には UA 文字列があります。

Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

IE 10 (およびそれ以前) には、次のような UA 文字列があります。

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

さまざまなバージョンの IE (つまり、c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers の下のブラウザー) を認識するために出荷されたブラウザー定義は、UA 文字列で「MSIE」を特に検索し、JavaScript 機能ベースを追加します。 IEのバージョンが一致しました。IE 11 では、一致は ie.browser で見つかりません。代わりに、generic.browser () で一致が見つかります。.Net 4.0 では、generic.browser は JavaScript を無効にしますが、4.5 では有効にして、問題を解決しました。

.browser ファイルを手動で編集してから実行しても同じ結果が得られない理由がわかりaspnet_regbrowsers –i and iisresetません。

于 2013-09-30T17:55:31.380 に答える
3

@Adhooo は、.Net 4.5 は Windows 2003 サーバーでは利用できないと言っているのは正しいので、Web サイトをホストするために Windows 2003 サーバーを実行している場合、2008 サーバーへの変更は一晩のオプションではありません。

正直なところ、私たちにとって、2008 サーバーで .Net 4.5 にアップグレードすることは、一晩でできるオプションではありません。また、使用できるようになる前にさまざまなテストを行う必要があるため、実際には次の数か月でできることでもありません。本番サーバーでは 4.5。

しかし、私たちのウェブサイトへの訪問者のために、この問題を解決する必要がありました。

問題を解決し、4.5 をリリースするという Microsoft のアドバイスに従って最終的に問題を解決できるようになるまでの時間を稼ぐために、次のことを行う必要があることがわかりました。

  1. ブラウザ ファイル - IE11 の使用に対応する方法を .Net Framework に指示するために、ブラウザ ファイルも変更しました。
  2. Microsoft パッチ - 次に、パッチ ( http://support.microsoft.com/kb/2836939/en-us ) をインストールして再起動しました。
  3. 新しいブラウザーの変更を登録します。コマンド ラインから、次の行を実行します。

    c:\windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regbrowsers.exe -i

  4. IIS をリセットします。これは、IIS がファイルへの変更を確実に取得するために行う必要がありました。

    iisreset

その後、Web サイトが IE11 で使用可能になり、非常に必要な QA テストに続いて、訪問者に本番環境で Web サイトを使用してもらうことができました。

ただし、プロセスをいじって、ブラウザ ファイルをサーバーに再適用する必要がある場合は、'aspnet_regbrowsers.exe –u' アンインストール フラグを使用して、再登録する前にファイルの登録を解除する必要があることに注意してください。それらを適用します。また、私たちの場合、MS パッチを再適用する必要もありました。

はい、少し面倒ですが、これは埋め込みプロセスと見なす必要があります。

お役に立てれば。

于 2013-12-02T12:40:30.977 に答える