2014-10-28 44 views
0

在服務器端定義爲「Chrome」的Opera用戶代理「Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/38.0.2125.104 Safari/537.36 OPR/25.0.1614.63」如何覆蓋服務器端的Request.Browser?

我想重寫對象的Request.Browser的創建和添加的文件「opera.browser」到文件夾「App_Browsers文件」:

<browsers> 
    <browser id="Opera" parentID="Chrome"> 
     <identification> 
     <userAgent match="OPR/(?'version'(?'major'\d+)(\.(?'minor'\d+)?)\w*)" /> 
     </identification> 

     <capabilities> 
     <capability name="browser" value="Opera" /> 
     <capability name="majorversion" value="${major}" /> 
     <capability name="minorversion" value="${minor}" /> 
     <capability name="type" value="Opera${major}" /> 
     <capability name="version" value="${version}" /> 
     </capabilities> 
    </browser> 
</browsers> 

但正則表達式不工作,Request.Browser.Browser仍然被定義爲「鉻」。

+0

我試過這個,它工作正常,請確保當你從瀏覽器請求時,欺騙useragent到所需的。 – 2014-10-28 15:30:26

+0

這很奇怪,如果您嘗試將Opera從Opera切換到Chrome,則兩個瀏覽器都會緩存Request.Browser對象。 – 2014-10-28 19:43:25

回答

1

您可以通過

HttpContext.SetOverriddenBrowser("Some browser"); 

手動設置的用戶代理,如果你想清除覆蓋簡單地做

HttpContext.ClearOverriddenBrowser(); 
0

您還必須更新chrome.browser(也可能是Mozilla的。瀏覽器)與該正則表達式不匹配。

相關問題