ASP 해결NET 서버 컨트롤이 IE10에서 호환되지 않는 문제

IE10을 사용하는 많은 어린이들이 이 문제를 발견했다고 믿습니다. 다음은 본인이 IE10 표준 모델에서 발생한 문제입니다. IE10은 한 버전만 있는 것이 아닙니다.
1. 서버 컨트롤 속성 손실, aspx 페이지에 정의된 TextBox:
  
IE10 표준 모드에서 찾아보니 너비가 맞지 않아 소스 코드가 켜져 있었습니다.
< input name = "txt"type = "text"id = "txt"/> width 속성이 없습니다
2. 가끔 페이지 오류 발견DoPostBack을 찾을 수 없음
현재 상기 두 가지를 발견했다. 첫 번째 반응은 호환성 문제이다. 몇 가지 자료를 찾았는데 과연 IE10의 버그였다. 마이크로소프트 제품에 대한 불만을 금치 못했다. 새로운 브라우저는 자신의 서버 컨트롤러까지 호환성 문제가 존재한다.
일반 사용자는 브라우저를 설정하여 호환 모드에서 실행하기만 하면 해결할 수 있지만 개발자는 어떻게 이 문제를 해결합니까?
VS 프로젝트에 App 추가Browsers 폴더, ie.browser 파일, 파일 컨텐트 게시물 아래:
<browsers>
    <!-- Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4325) -->
    <browser id="IE6Plus" parentID="IE">
        <identification>
            <capability name="majorversion" match="^[6-9]|\d{2,}$" />
        </identification>

        <capabilities>
            <capability name="ecmascriptversion"    value="3.0" />
            <capability name="jscriptversion"       value="5.6" />
            <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>

    <!-- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;) -->
    <browser id="IE6to9" parentID="IE6Plus">
        <identification>
            <capability name="majorversion" match="^[6-9]$" />
        </identification>
    </browser>

    <!-- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;) -->
    <browser id="IE7" parentID="IE6to9">
        <identification>
            <capability name="majorversion" match="^7$" />
        </identification>
        <capabilities>
            <capability name="jscriptversion" value="5.7" />
        </capabilities>
    </browser>

    <!-- Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729) -->
    <browser id="IE8" parentID="IE6to9">
        <identification>
            <capability name="majorversion" match="^8$" />
        </identification>
        <capabilities>
            <capability name="jscriptversion" value="6.0" />
        </capabilities>
    </browser>

    <!-- Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729) -->
    <browser id="IE9" parentID="IE6to9">
        <identification>
            <capability name="majorversion" match="^9$" />
        </identification>
        <capabilities>
            <capability name="jscriptversion" value="6.0" />
        </capabilities>
    </browser>

    <!-- Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) -->
    <browser id="IE10Plus" parentID="IE6Plus">
        <identification>
            <capability name="majorversion" match="\d{2,}" />
        </identification>
        <capabilities>
            <capability name="jscriptversion" value="6.0" />
        </capabilities>
    </browser>

    <gateway id="IEbeta" parentID="IE">
        <identification>
            <capability name="letters" match="^([bB]|ab)" />
        </identification>

        <capture>
        </capture>

        <capabilities>
            <capability name="beta"    value="true" />
        </capabilities>
    </gateway>
</browsers>

이것은 사이트 기반 복구 방식으로 Microsoft 공식 자료를 참조합니다.
.NET 4 브라우저 업데이트 NuGet 패키지 -http://nuget.org/List/Packages/App_BrowsersUpdate
.NET 2.0 브라우저 업데이트 NuGet 패키지 -http://nuget.org/List/Packages/App_BrowsersUpdate.net20
또 하나는 서버에 있는 모든 사이트의 호환성 문제를 해결할 수 있도록 패치하는 것이다
.NET 4 - http://support.microsoft.com/kb/2600088
.NET 2.0 - http://support.microsoft.com/kb/2600100
 
또한 블로거는 프로젝트에서 대량의 개발자 프레스 서버 컨트롤러를 사용했기 때문에 말로 표현할 수 없을 정도로 고통스러웠다. 상기 방식에 따라 복구를 했지만 VS 자체 컨트롤러는 문제가 없었지만 dev 컨트롤러는 많은 오류가 발생했고 결국 복원되지 않아 사용자로 하여금 호환성 모드를 사용하게 했다.
마이크로소프트가 다음 버전의 브라우저를 발표할 때만 이 문제를 복구할 수 있기를 바랍니다
 
웹에서config에 HTTP 응답 헤더를 추가하여 브라우저 렌더링 모드 변경
참조 자료:
http://www.iis.net/configreference/system.webserver/httpprotocol/customheaders
http://msdn.microsoft.com/zh-cn/library/bb763179.aspx
http://blogs.msdn.com/b/webtopics/archive/2008/09/05/configuring-iis-to-work-around-webpage-display-issues-caused-by-internet-explorer-8-0.aspx
<configuration>
       <system.webServer>
          <httpProtocol>
             <customHeaders>
                <clear />
                <add name="X-UA-Compatible" value="IE=EmulateIE7" />
             </customHeaders>
          </httpProtocol>
       </system.webServer>
    </configuration>

좋은 웹페이지 즐겨찾기