2012-05-28 15 views
6

Đây là mã của tôi dưới đây:Sự khác nhau giữa Request.UserAgent và Request.Browser là gì?

User_Info.Add(!string.IsNullOrEmpty(Request.UserAgent) ? Request.UserAgent : string.Empty);//4:UserAgent 

    HttpBrowserCapabilities browser = Request.Browser; 
    User_Info.Add(!string.IsNullOrEmpty(browser.Browser) ? "Name : " + browser.Browser + " | " + 
                  "Type : " + browser.Type + " | " + 
                  "MajorVersion : " + browser.MajorVersion + " | " + 
                  "MinorVersion : " + browser.MinorVersion : string.Empty);//5:UserBrowser 

sự khác biệt giữa Request.UserAgent và Request.Browser là gì?
Tôi không thể hiểu các chuỗi UserAgent đó!
Bạn vui lòng hiển thị một số ví dụ với giải thích?

Trả lời

7

Yêu cầu.Browser khác với Request.UserAgent. UserAgent nhận chuỗi tác nhân người dùng thô của trình duyệt ứng dụng khách và Request.Browser mang đến cho bạn thông tin về khả năng của trình duyệt. Bạn sẽ không nhận được tất cả các khả năng của trình duyệt với UserAgent string.

1

Request.UserAgent hơi khó hiểu và yêu cầu phân tích cú pháp để xác định trình duyệt nào, cụ thể là khách truy cập đang sử dụng. Hơn nữa, nó không chứa thông tin giống như những gì phiên bản của JavaScript của trình duyệt hỗ trợ, hoặc nếu trình duyệt hỗ trợ CSS 2.0 stylesheets

Thuộc tính Request.Browser là một thể hiện của đối tượng HttpBrowserCapabilities cung cấp tất cả các thông tin ...

Tham khảo: http://www.4guysfromrolla.com/articles/120402-1.aspx

10

UserAgent cung cấp cho bạn chuỗi thô về trình duyệt. Nó có thể trông như thế này:

User Agent :: Mozilla/4.0 (compatible; MSIE 6.0B; Windows NT 5.1; .NET CLR 1.0.2914)

Request.Browser sẽ cung cấp cho bạn HttpBrowserCapabilities đối tượng sẽ có thông tin phiên bản trình duyệt cùng với một số thông tin bổ sung về khả năng của trình duyệt. Ví dụ:

  1. Trình duyệt có hỗ trợ Frames
  2. Nếu nó hỗ trợ cookie?
  3. Hỗ trợ JavaScripts?
  4. Hỗ trợ Java Applet? vv

Nhìn vào đoạn code mẫu sau:

HttpBrowserCapabilities bc = Request.Browser; 
Response.Write("<p>Browser Capabilities:</p>"); 
Response.Write("Type = " + bc.Type + "<br>"); 
Response.Write("Name = " + bc.Browser + "<br>"); 
Response.Write("Version = " + bc.Version + "<br>"); 
Response.Write("Major Version = " + bc.MajorVersion + "<br>"); 
Response.Write("Minor Version = " + bc.MinorVersion + "<br>"); 
Response.Write("Platform = " + bc.Platform + "<br>"); 
Response.Write("Is Beta = " + bc.Beta + "<br>"); 
Response.Write("Is Crawler = " + bc.Crawler + "<br>"); 
Response.Write("Is AOL = " + bc.AOL + "<br>"); 
Response.Write("Is Win16 = " + bc.Win16 + "<br>"); 
Response.Write("Is Win32 = " + bc.Win32 + "<br>"); 
Response.Write("Supports Frames = " + bc.Frames + "<br>"); 
Response.Write("Supports Tables = " + bc.Tables + "<br>"); 
Response.Write("Supports Cookies = " + bc.Cookies + "<br>"); 
Response.Write("Supports VB Script = " + bc.VBScript + "<br>"); 
Response.Write("Supports JavaScript = " + bc.JavaScript + "<br>"); 
Response.Write("Supports Java Applets = " + bc.JavaApplets + "<br>"); 
Response.Write("Supports ActiveX Controls = " + bc.ActiveXControls + "<br>"); 
Response.Write("CDF = " + bc.CDF + "<br>"); 

Đối với so sánh phiên bản trình duyệt chống lại một tác nhân người dùng, bạn sẽ phải sử dụng các hoạt động chuỗi (Có), trong khi trong trường hợp Request.Browser bạn có thể so sánh chống lại một tài sản.

+0

Tôi tự hỏi liệu lớp HttpBrowserCapabilities vẫn có liên quan hay không. Tôi đặt mã này trong Bộ điều khiển cùng với nhiều thuộc tính khác mà nó hiển thị, sau đó chuyển đến trang trong Chrome, Edge, Safari (dành cho cửa sổ) và Firefox. Phần lớn thông tin được trả về, chẳng hạn như ScreenPixelsHeight = 480 và ScreenPixelsWidth = 640 đều giống nhau và cũng không chính xác. –