我们看到一些Safari浏览器在从.NET 3.5升级到.NET 4.0后无法对我们的网站进行交叉验证.
经过大量调查,结果证明ASP.NET正确识别Safari浏览器存在问题.ASP.NET将一些Safari(可能是其他基于WebKit的浏览器)标识为Mozilla Version 0.0.不支持cookie,框架,JavaScript等的浏览器.NET 3.5在识别这些浏览器时没有任何问题.
我们已将测试简化为简单的HTTP处理程序(在vanilla 4.0网站上运行),该处理程序仅返回请求程序的浏览器功能.
以下是一些无法识别的用户代理(它们被标识为Mozilla 0.0):
Mozilla/5.0+(Macintosh;+U;+Intel+Mac+OS+X+10_5_8;+en-us)+AppleWebKit/533.19.4+(KHTML,+like+Gecko)+Version/5.0.3+Safari/533.19.4Mozilla/5.0+(Macintosh;+U;+Intel+Mac+OS+X+10_6_2;+en-us)+AppleWebKit/531.9+(KHTML,+like+Gecko)Mozilla/5.0+(Macintosh;+U;+Intel+Mac+OS+X+10_6_7;+en-us)+AppleWebKit/533.20.25+(KHTML,+like+Gecko)+Version/5.0.4+Safari/533.20.27Mozilla/5.0+(Macintosh;+U;+Intel+Mac+OS+X+10_6_6;+en-us)+AppleWebKit/533.18.1+(KHTML,+like+Gecko)处理程序代码如下所示:
<%@ WebHandler Language="C#" Class="PowershellTemporaryHandler" %>
using System;
using System.Web;
using System.Web.Security;
public class PowershellTemporaryHandler : IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
HttpBrowserCapabilities hbc = context.Request.Browser;
context.Response.Write("Type=" + hbc.Type + "<br>");
context.Response.Write("Name=" + hbc.Browser + "<br>");
context.Response.Write("Version=" + hbc.Version + "<br>");
context.Response.Write("Major Version=" + hbc.MajorVersion + "<br>");
context.Response.Write("Minor Version=" + hbc.MinorVersion + "<br>");
context.Response.Write("Platform=" …Run Code Online (Sandbox Code Playgroud)