2011-04-15 90 views
0

我在兩臺機器上測試ASP.NET 3.5應用程序:一臺是Windows 7 x64,另一臺是Windows Server 2008 x64。ASP.NET:Chrome瀏覽器不一致的檢測

當我使用相同的瀏覽器實例中打開這2臺機的網站,我得到HttpBrowserCapabilities.Browser不同的結果:在Windows 7機器上我得到browser.Name = "appleMac-safari",而Windows Server計算機上我得到browser.Name = "applewebkit"

兩款機器都是有asp.net應用程序的相同(據我所知)安裝,同樣machine.config文件和文件*.browser也相同於C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\Browsers

爲什麼這種差異發生的任何想法?

回答

1

使用以下方法來檢測瀏覽器,因爲它是更可靠的

if (Request.UserAgent.Contains("Chrome")) 
{ 
    .... 
} 

凡的UserAgent值是:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16 
0

我想看看用戶代理字符串瀏覽器中發送機會在這兩個平臺上,用戶代理字符串與該版本的chrome不同。有很多小的差異。另外,我想補充一點,在大多數情況下,服務器端瀏覽器嗅探的用途非常有限,因爲如您所見,它不是特別可靠,並且可以很容易僞造。如果您希望以不同的方式設計風格或調整某些客戶端行爲,那麼使用類似Modernizr這樣的javascript軟件包來執行特徵檢測是一種更加穩健的方法。

+0

謝謝。將檢查Modernizr。但我使用相同的瀏覽器實例(僅限不同的標籤)訪問這兩個網站,所以它必須是相同的用戶代理,對吧? – rodbv 2011-04-15 14:44:19

+0

啊,是的,它確定_應該是同一個用戶代理。我誤解了你的問題,關於應用程序的位置以及瀏覽器的位置。它仍然不會傷害比較useragent字符串,以及瀏覽器發送的任何其他標題,以查看是否有任何差異。 – cdeszaq 2011-04-15 14:52:40