偵側瀏覽器版本的方法很多種,有的人透過 Java Script ,有的人用 Request ,
我遇到的一個情況是同事希望透過 Reuqest.browser.type 得知瀏覽器的版本,
但是 .net 2.0 的網站下 Reuqest.browser.type 無法正確得知 chrome 的資訊…
這是參考國外這篇文章所了解的:
http://weblogs.asp.net/ricardoperes/archive/2009/09/22/detecting-chrome-browser-in-asp-net.aspx
不過光是照上面那樣這樣做還是不夠,還有一些步驟要做:
首先在 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers 之下加入 chrome.browser
內容如下:
<browsers>
<browser id="Chrome" parentID="Mozilla">
<identification>
<userAgent match="Chrome/(?'version'(?'major'\d+)\.(?'minor'\d+\.\d+)\.\d+)" />
</identification>
<capabilities>
<capability name="browser" value="Chrome" />
<capability name="majorversion" value="${major}" />
<capability name="minorversion" value="${minor}" />
<capability name="type" value="Chrome" />
<capability name="version" value="${version}" />
</capabilities>
</browser>
</browsers>
另外還要去修改 mozilla.config 這個檔,找到 GECKO 那一段
<browser id="Gecko" parentID="Mozilla">
<identification>
<userAgent nonMatch="Chrome" /> <== 加入這一行,不然會被偵測為 Safari
<userAgent match="Gecko" />
</identification>
接著存檔後,在命令模式下進入 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
執行 aspnet_regbrowsers.exe -i (每次 browser 檔案有改,記得要重新 bind 一次)
(此工具用途請參考 http://msdn.microsoft.com/zh-tw/library/ms229858(v=VS.80).aspx )
完成! 現在應該可以透過 Request.browser.type 等資訊,輕鬆辨認 chrome 了~
第2招,在 web.config 直接修改就好,但效果只有在該網站內有效,這是在.net1.1時代的做法,2.0仍然有支援,
做法:在 <system.web> 之下加入此段代碼
<browserCaps>
<use var="HTTP_USER_AGENT" />
<filter>
<case match="Chrome/(?'version'(?'major'\d+)\.(?'minor'\d+\.\d+).\d+)">
browser=Chrome
version=${version}
majorversion=${major}
minorversion=${minor}
type=Chrome
</case>
</filter>
</browserCaps>
完成!
留言列表