2012-03-15 44 views
2

我試圖檢測使用c#的MAC用戶。我使用了下面的代碼,但是當mac用戶瀏覽我的網站時,它總是說未知。它適用於windows用戶,但不適用於MAC或其他任何東西。有沒有人有任何想法如何挑選mac用戶?ASP.NET - 如何檢測MAC用戶

感謝

HttpBrowserCapabilities moo = HttpContext.Current.Request.Browser; 

    StringBuilder sb = new StringBuilder(); 

    sb.Append("<p>Browser Capabilities:</p>"); 
    sb.Append("Type = " + moo.Type + "<br>"); 
    sb.Append("Name = " + moo.Browser + "<br>"); 
    sb.Append("Version = " + moo.Version + "<br>"); 
    sb.Append("Major Version = " + moo.MajorVersion + "<br>"); 
    sb.Append("Minor Version = " + moo.MinorVersion + "<br>"); 
    sb.Append("Platform = " + moo.Platform + "<br>"); 
    sb.Append("Is Beta = " + moo.Beta + "<br>"); 
    sb.Append("Is Crawler = " + moo.Crawler + "<br>"); 
    sb.Append("Is AOL = " + moo.AOL + "<br>"); 
    sb.Append("Is Win16 = " + moo.Win16 + "<br>"); 
    sb.Append("Is Win32 = " + moo.Win32 + "<br>"); 
    sb.Append("Supports Frames = " + moo.Frames + "<br>"); 
    sb.Append("Supports Tables = " + moo.Tables + "<br>"); 
    sb.Append("Supports Cookies = " + moo.Cookies + "<br>"); 
    sb.Append("Supports VB Script = " + moo.VBScript + "<br>");  
    sb.Append("Supports ActiveX Controls = " + moo.ActiveXControls + "<br>"); 
    sb.Append("CDF = " + moo.CDF + "<br>"); 
+1

創建一個「應用程序」鏈接,P – leppie 2012-03-15 11:13:27

+0

你是什麼意思? – Funky 2012-03-15 11:15:23

回答

2

可以使用Request.UserAgent它將返回是這樣的: 「的Mozilla/5.0(窗口; U; Windows NT的5.1; DA; RV:1.8.1.13)的Gecko/20080311 Firefox的/ 2.0.0.13" .. ,那麼你將需要提取OS

+0

是的我意識到這一點,但它不是很有幫助只是有一個長文本字符串 – Funky 2012-03-15 11:15:01

+1

這可能有助於http://chrisschuld.com/proj/Browser/test.php – 2012-03-15 11:16:38

4

您可以從Request.UserAgent中提取操作系統信息。

Macintosh的用戶代理字符串形式如下:

「的Mozilla/5.0(在Macintosh; U;英特爾的Mac OS X 10_5_6; EN-US) 爲AppleWebKit/528.16(KHTML,例如Gecko)版本/ 4.0的Safari/528.16"

「的Mozilla/4.0(兼容; MSIE 5.15; Mac_PowerPC)」

所以,你可以這樣做:

public bool IsMacOS(string userAgent) 
{ 
    var osInfo = userAgent.Split(new Char[] { '(', ')' })[1]; 
    return osInfo.Contains("Mac_PowerPC") || osInfo.Contains("Macintosh"); 
} 
0

您應該使用本機ASP.NET瀏覽器上限並擴展它們。

你所做的只是在ASP.NET應用程序中創建App_Browsers/BrowserFile.browser文件。

這添加到文件:

<browsers> 
    <gateway id="MacOS" parentID="Safari"> 
    <identification> 
     <userAgent match="Intel Mac OS X" /> 
    </identification> 

    <capabilities> 
     <capability name="platform" value="MacOS" /> 
    </capabilities> 
    </gateway> 
</browsers> 

這樣做就足夠Browser.Platform返回「MacOS的」