.Net 4.0-website nicht identifizieren kann, einige AppleWebKit basierte Browser

Sehen wir einige Safari-Browser fehlschlagen cross-Authentifizierung unserer website, nachdem wir ein upgrade an .NET 4.0 aus .NET 3.5.

Nach viel Untersuchung, es stellt sich heraus, dass ein problem mit ASP.NET die Ermittlung der Safari-Browser einwandfrei. ASP.NET zeigt Safari (evtl. auch andere WebKit-basierte Browser) als Mozilla die Version 0.0. Browser, die nicht unterstützen, cookies, frames, JavaScript, etc. .NET 3.5 hat keine Schwierigkeiten, diese Browser.

Wir haben die vereinfachte Prüfung nach einem einfachen HTTP-handler (ausgeführt auf einem Vanille-4.0-website), dass gibt nur die browser-Funktionen des anforderers.

Hier sind ein paar User-Agents, die nicht identifiziert werden können (Sie identifiziert sich als 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.4
  • Mozilla/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.27
  • Mozilla/5.0+(Macintosh;+U;+Intel+Mac+OS+X+10_6_6;+en-us)+AppleWebKit/533.18.1+(KHTML,+like+Gecko)

Den hf-code sieht wie folgt aus:

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

Sind wir verwirrt, da der Mangel an Erwähnung im Internet über dieses problem. Es scheint, dass wir brauchen, um hinzuzufügen, Browser Definitionen entweder zu Rahmen/config/Browser-Ordner oder sonst den Ordner App_Browsers auf der website-Ebene, aber es scheint Bizarr, dass wir Sie brauchen würden, zu optimieren Browser-Definitionen für eine .NET 4.0 website ordnungsgemäß ausgeführt werden kann.

Hat jemand irgendwelche Erfahrungen mit diesem Problem?

  • Ich bin auch mit diesem problem .net 3.5 und 4.0. Beispiel für user agent, nicht anerkannt - "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; de-de) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27". Erste Mozilla 0.0.
  • Haben Sie versucht, die Lösung von user1777803 unten?
  • sorry das war so lange her, kann ich nicht zuverlässig beantworten.
InformationsquelleAutor Chad | 2011-03-29
Schreibe einen Kommentar