2016-07-28 22 views
2

Ich versuche, eine Browserdefinitionsdatei für Edge in Asp.Net zu schreiben, damit sie nicht als "Chrome 46" identifiziert wird.App_Browsers Definitionsdatei für Edge

Ich habe die folgende Edge.browser Datei im App_Browsers Ordner erstellt:

<browsers> 
    <!--Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586-->  
    <browser id="Edge" parentID="Chrome"> 
    <identification> 
     <userAgent match="Edge" /> 
    </identification> 
    <capture> 
     <userAgent match="Edge/(?'version'(?'major'\d+)(\.(?'minor'\d+)?))" /> 
    </capture> 
    <capabilities> 
     <capability name="browser" value="Edge" /> 
     <capability name="version" value="${version}" /> 
     <capability name="majorVersion" value="${major}" /> 
     <capability name="minorVersion" value="${minor}" /> 
    </capabilities> 
    </browser> 
</browsers> 

Dieser Rand passt sehr gut, aber dann machen, wenn eine weitere Anforderung an die Website mit Chrome, der Browser wird auch als Edge-matched: S

Was mache ich falsch?

Antwort

4

Versuchen Sie, Ihre Definition zu ändern:

<browsers> 
    <browser id="Edge" parentID="Chrome"> 
    <identification> 
     <userAgent match="Edge/(?'version'(?'major'\d+)(\.(?'minor'\d+)?)\w*)" /> 
    </identification> 

    <capabilities> 
     <capability name="browser"       value="Edge" /> 
     <capability name="majorversion"     value="${major}" /> 
     <capability name="minorversion"     value="${minor}" /> 
     <capability name="type"       value="Edge${major}" /> 
     <capability name="version"       value="${version}" /> 
    </capabilities> 

    </browser> 
</browsers> 

Dont die Regex in <capture> -Tag setzen, aber in <identification>

EDIT

Da die userAgentCacheKeyLength ist auf 64 standardmäßig beschränkt, die nachfolgenden Zeichen werden abgeschnitten und das führt zu Ihrem beschriebenen Verhalten. Glücklicherweise gibt es einen Workaround.

diese Zeilen in Ihrem web.config

<system.web> 
    <browserCaps userAgentCacheKeyLength="256" /> 
</system.web> 

hinzufügen Jetzt sollte jeder Chrome-basierte Browser

+0

Das funktioniert nicht richtig, da seine volle Schlüssel erkannt offenbaren wird: Sie Ihre Website, greifen Sie mit dem Edge -> Request.Browser ist Edge. Jetzt zugreifen Sie mit Chrome: Request.Browser ist auch Edge –

+0

@GyumFox Antwort verbessert. – lokusking

+0

Arbeiten mit den Änderungen an der Konfigurationsdatei! Macht jetzt mehr Sinn! –