徵兆
請試想下列案例:
-
憑證服務網頁註冊角色服務安裝於基於 Windows Server 2008 R2 的伺服器上。
-
你有一台客戶端電腦正在運行 Internet Explorer 10 或更新版本。
-
你嘗試存取託管在 Windows Server 2008 R2 伺服器上的憑證服務網頁。
在此情境下,Internet Explorer 會收到以下錯誤:
此瀏覽器不支援憑證請求的產生
原因
瀏覽器版本檢查錯誤地將 Internet Explorer 版本標示為「IE 1」。
因應措施
針對此問題,支援的解決方法如下:
-
在 Internet Explorer 中設定相容性檢視。
-
將網頁註冊頁面功能移至 Windows Server 2012。
-
請修改 Certsbrt.inc 檔案,將第 44 至 70 行替換為以下內容。 Certsbrt.inc 位於以下資料夾中:
%WINDIR%\system32\certsrv\en-us
'' If there is no '.' in the UserAgent string, this will return the next character if any' as the version number. ' We extract the string until a '.' and then convert it' into integer. If -1 is returned from this function then it isn't MSIE 'Function GetInternetExplorerVersionNumber(sHttpUserAgent) Dim nMSIEGetInternetExplorerVersionNumber = -1 nMSIE = InStr(sHttpUserAgent, "MSIE") If 0 <> nMSIE Then numChar = InStr(Mid(sHttpUserAgent, nMSIE + 5), ".") - 1 If -1 = numChar Then ' no '.' in the string numChar = 1 End If If nMSIE + 5 + numChar - 1 <= Len(sHttpUserAgent) Then GetInternetExplorerVersionNumber = CInt(Mid(sHttpUserAgent, nMSIE + 5, numChar)) End If End IfEnd Function'' We define a Old MSIE based browser' if it has the string MSIE that is followed by a version number that is less than 4' NOTE:' IsOldMSIE = False does not imply MSIE >= 4.'' i.e. Not IsOldMSIE("abc") = True' Not IsOldMSIE("MSIE") = True'Function IsOldMSIE(sHttpUserAgent) Dim nMSIE Dim sMSIEVersion IsOldMSIE = False nMSIE = InStr(sHttpUserAgent, "MSIE") If nMSIE <> 0 AND (nMSIE+5 < Len(sHttpUserAgent)) Then nVersion = GetInternetExplorerVersionNumber(sHttpUserAgent) If -1 <> nVersion Then IsOldMSIE = nVersion < NEW_MSIE_VERSION End If End IfEnd Function
其他相關資訊
在 Windows Server 2008 R2 伺服器上未修改的 Certsbrt.inc 檔案中,第 44 至 70 行如下。 這些是要更換的線條。
'' We define a Old MSIE based browser' if it has the string MSIE that is followed by a version number that is less than 4' NOTE:' IsOldMSIE = False does not imply MSIE >= 4.'' i.e. Not IsOldMSIE("abc") = True' Not IsOldMSIE("MSIE") = True'Function IsOldMSIE(sHttpUserAgent) Dim nMSIE Dim sMSIEVersion nMSIE = InStr(sHttpUserAgent, "MSIE") If nMSIE=0 Then IsOldMSIE = False ElseIf nMSIE+5 < Len(sHttpUserAgent) Then sMSIEVersion = Mid(sHttpUserAgent, nMSIE+5, 1) IsOldMSIE = CInt(sMSIEVersion) < NEW_MSIE_VERSION Else IsOldMSIE = False End IfEnd Function