2010-06-18 43 views
1

HttpBrowserCapabilities browse = Request.Browser; 似乎只能爲所有其他瀏覽器帶回IE或Netscape。有沒有人得到HttpBrowserCapabilities在asp.net中工作

我更新了具有asp.net c#的開發人員電腦上的C:\ WINDOWS \ system32 \ inetsrv browscap.ini文件。

我的要求是在服務器端代碼中捕獲客戶端瀏覽器。

謝謝。

回答

2

http://owenbrady.net/browsercaps/這是一個xml文件,您將其添加到web.config中,該文件將詳細信息返回給browsercapabilities結構。這應該做你想要的。

編輯:我只在IIS7和Asp.Net 3.5上測試過。

+0

先生,謝謝你的幫助。 我的要求是爲此工作.net 1.1 有些人似乎說我應該更新machine.config其他web.config。 如果我更新web.config系統抱怨。 如果我更新machine.config,系統仍然抱怨。 所有的信息似乎都不清楚。 machine.config已經有Firefox的條目,那麼爲什麼系統會說第一個默認選項'unknown':( – Hunt 2010-06-21 14:33:33

+0

是App_Browsers只是.net 2? – Hunt 2010-06-21 14:41:28

+0

啊。對不起,我真的不能回答因爲我*僅*在ASP.Net 3.5的IIS7上測試了它。配置方法允許您只在一個網站上提供它,而不是整個機器。 http://msdn.microsoft.com/en-us/library/sk9az15a.aspx這個頁面似乎暗示它在需求下工作,看起來web.config和machine.config都可以工作,但它並不真的說是否有任何限制,因爲1.1 ...我會繼續尋找你,雖然 – Buildstarted 2010-06-21 15:17:08

1

看看App_Browsers文件夾,可以添加一個.browser文件來擴展對ASP.net中Request.Browser對象的檢測。

例如:要檢測到BlackBerry,您需要以下規則,例如: blackberry.browser添加到該文件夾​​App_Browsers文件:

<browsers>  
    <browser id="BlackBerry" parentID="Default"> 
    <identification> 
     <userAgent match="BlackBerry(?'model'\d+)/(?'version'((?'major'\d+).(?'minor'\d+).(?'other'\d+)))" /> 
    </identification> 
    <capabilities> 
     <capability name="browser"  value="BlackBerry" /> 
     <capability name="isMobileDevice"  value="true" /> 
     <capability name="javascript"  value="true" /> 
     <capability name="ecmascriptversion"  value="1.3" /> 
     <capability name="version"  value="${version}" /> 
     <capability name="majorVersion"  value="${major}" /> 
     <capability name="minorVersion"  value="${minor}" /> 
     <capability name="supportsCss"  value="true" /> 
     <capability name="css1"       value="true" /> 
     <capability name="css2"         value="true" /> 
     <capability name="frames"  value="false" /> 
     <capability name="cookies"  value="true" /> 
     <capability name="mobileDeviceManufacturer" value="RIM" /> 
     <capability name="isColor"       value="true" /> 
     <capability name="supportsBold"     value="true" /> 
     <capability name="supportsFontName"    value="true" /> 
     <capability name="supportsImageSubmit"    value="true" /> 
     <capability name="supportsItalic"     value="true" /> 
     <capability name="preferredImageMime"    value="image/jpeg" /> 
    </capabilities> 
    </browser> 
</browsers> 

現在你可以永遠保存添加你自己的,但有來自微軟的一個項目,有成千上萬在他們的文件的設備:MDBF,但他們最近關閉該項目分解(但最後的版本仍然可以訪問)。 因此,替代方案是包含51degrees.codeplex.com這不像MDBF那樣容易,但應該完成工作。

1

使用.Net 3.5,我已經將HttpBrowserCapabilities與web.config的browsercaps部分一起使用了。這就是我所擁有的,在同一臺機器上的IE 8,Firefox,Chrome和Safari中驗證。

 System.Web.HttpBrowserCapabilities browser = Request.Browser; 

     BrowserNm.Text = browser.Browser; 
     BrowserVer.Text = browser.Version; 
     Platform.Text = browser.Platform; 

我對瀏覽器檢測的要求很相似,但我們根本不想使用browsercaps。如果你打算使用browsercaps,那麼你也可以編寫正則表達式來識別瀏覽器,這是我們第一個選擇,我討厭它。

我還在研究的三個屬性是IsMobileDevice,MobileDeviceManufacturer和MobileDeviceModel。如果我知道這些工作,我是金。

相關問題