2012-03-15 2 views
2

Я пытаюсь обнаружить пользователя MAC с помощью C#. Я использовал следующий код, но он всегда говорит, что неизвестно, когда пользователь 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

Создать «приложение» ссылку, р – leppie

+0

что вы имеете в виду? – Funky

ответ

2

вы можете использовать Request.UserAgent он будет возвращать что-то вроде этого: «Mozilla/5.0 (Windows; U; Windows NT 5.1; да; с.в.: 1.8.1.13) Gecko/20080311 Firefox/2.0.0.13" .. , то вам нужно будет извлечь ОС

+0

Да, я знаю об этом, но это не очень полезно, просто имея длинную текстовую строку – Funky

+1

, это может помочь http://chrisschuld.com/proj/Browser/test.php –

4

Вы можете извлечь информацию о ОС с Request.UserAgent.

Macintosh строки агента пользователя в таком виде:

«Mozilla/5.0 (compatible; Intel Mac OS X 10_5_6; ан-нас) AppleWebKit/528,16 (KHTML, как Gecko) Version/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 и просто расширить их.

Что вы делаете, просто создайте файл App_Browsers/BrowserFile.browser в своем приложении ASP.NET.

И добавьте к этому файлу:

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

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

Doing этого будет достаточно для Browser.Platform вернуть «MacOS»

Смежные вопросы