O site Vanilla .Net 4.0 não consegue identificar alguns navegadores baseados no AppleWebKit

2

Estamos vendo alguns navegadores do Safari não autenticando de forma cruzada o nosso site após a atualização para o .net 4.0 do .net 3.5.

Depois de muita investigação, acaba por ser um problema com ASP.Net identificar os navegadores Safari corretamente. O ASP.Net identifica alguns Safari (possivelmente outros navegadores baseados no AppleWebKit) como o Mozilla Versão 0.0. navegadores que não suportam cookies, frames, javascript, etc. O .NET 3.5 não tem nenhum problema em identificar esses navegadores.

Nós simplificamos os testes em um manipulador http simples (executado em um site vanilla 4.0) que apenas retorna os recursos do navegador do solicitante.

Aqui estão alguns User-Agents que não são identificados (eles são identificados como Mozilla 0.0):

  • Mozilla / 5.0 + (Macintosh; + U; + Intel + Mac + OS + X + 10_5_8; + en-us) + AppleWebKit / 533.19.4 + (KHTML, + como + Gecko) + Versão / 5.0.3 + Safari / 533.19.4
  • Mozilla / 5.0 + (Macintosh; + U; + Intel + Mac + OS + X + 10_6_2; + en-us) + AppleWebKit / 531.9 + (KHTML, + como + Gecko)
  • Mozilla / 5.0 + (Macintosh; + U; + Intel + Mac + OS + X + 10_6_7; + en-us) + AppleWebKit / 533.20.25 + (KHTML, + como + Gecko) + Versão / 5.0.4 + Safari / 533.20.27
  • Mozilla / 5.0 + (Macintosh; + U; + Intel + Mac + OS + X + 10_6_6; + en-us) + AppleWebKit / 533.18.1 + (KHTML, + como + Gecko)

O código do manipulador é assim:

<%@ 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>");
}
}

Estamos perplexos quanto à falta de menção na Internet sobre este problema. Parece que precisamos adicionar definições de Navegador à pasta framework / config / browsers ou à pasta App_Browsers no nível do site, mas parece bizarro que precisaríamos ajustar os defs do Navegador para que um site .net 4.0 funcione corretamente .

Alguém tem alguma experiência com esse problema?

    
por Chad 29.03.2011 / 21:48

0 respostas