Назад | Перейти на главную страницу

Веб-сайт Vanilla .Net 4.0 не может идентифицировать некоторые браузеры на основе AppleWebKit

Мы наблюдаем, как некоторые браузеры Safari не могут перекрестно аутентифицировать наш веб-сайт после обновления до .net 4.0 с .net 3.5.

После долгих исследований выяснилось, что ASP.Net правильно определяет браузеры Safari. ASP.Net идентифицирует некоторые Safari (возможно, другие браузеры на основе AppleWebKit) как Mozilla версии 0.0. браузеры, которые не поддерживают файлы cookie, фреймы, javascript и т. д. .Net 3.5 не имеет проблем с идентификацией этих браузеров.

Мы упростили тестирование до простого обработчика http (работающего на веб-сайте vanilla 4.0), который возвращает только возможности браузера запрашивающей стороны.

Вот несколько пользовательских агентов, которые не удается идентифицировать (они обозначены как Mozilla 0.0):

Код обработчика выглядит так:

<%@ WebHandler Language="C#" Class="TemporaryHandler" %>

using System;
using System.Web;
using System.Web.Security;

public class TemporaryHandler : 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=" + hbc.Platform + "<br>");
    context.Response.Write("Is Beta=" + hbc.Beta + "<br>");
    context.Response.Write("Is Crawler=" + hbc.Crawler + "<br>");
    context.Response.Write("Is AOL=" + hbc.AOL + "<br>");
    context.Response.Write("Is Win16=" + hbc.Win16 + "<br>");
    context.Response.Write("Is Win32=" + hbc.Win32 + "<br>");
    context.Response.Write("Supports Tables=" + hbc.Tables + "<br>");
    context.Response.Write("Supports cookies=" + hbc.Cookies + "<br>");
    context.Response.Write("Supports VBScript=" + hbc.VBScript + "<br>");
    context.Response.Write("Supports Frames=" + hbc.Frames + "<br>");
    context.Response.Write("Supports JavaScript=" + hbc.EcmaScriptVersion.ToString() + "<br>");
    context.Response.Write("Supports Java Applets=" + hbc.JavaApplets + "<br>");
    context.Response.Write("Supports ActiveX Controls=" + hbc.ActiveXControls + "<br>");
    context.Response.Write("User Agent=" + context.Request.UserAgent + "<br>");
}
}

Нас сбивает с толку отсутствие упоминания об этой проблеме в Интернете. Кажется, что нам нужно добавить определения браузера либо в папку framework / config / browsers, либо в папку App_Browsers на уровне веб-сайта, но кажется странным, что нам нужно настроить определения браузера для правильной работы веб-сайта .net 4.0. .

У кого-нибудь есть опыт работы с этой проблемой?