Die Uri-Klasse standardmäßig RFC 2396. Für OpenID und OAuth zu erfüllen, muss ich Uri mit RFC konsequente Flucht 3986.Wie kommt man Uri.EscapeDataString mit RFC 3986
Vom System.Uri class documentation:
Standardmäßig sind alle reservierten Zeichen im URI gemäß RFC 2396 maskiert. Dieses Verhalten ändert sich, wenn die Analyse von internationalen Ressourcen-IDs oder internationalen Domänennamen aktiviert ist. In diesem Fall werden reservierte Zeichen im URI gemäß RFC 3986 und RFC 3987 gemerkt.
In der Dokumentation wird auch, dass diese IRI-Modus zu aktivieren und somit bedeutet die RFC 3986 Verhalten ein uri Abschnitt Element hinzugefügt wird machine.config und diese zu Ihrem app/web.config-Datei:
<configuration>
<uri>
<idn enabled="All" />
<iriParsing enabled="true" />
</uri>
</configuration>
Aber ob diese vorhanden ist, In der .config-Datei oder nicht, erhalte ich das gleiche (nicht-3986) Escaping-Verhalten für eine .NET 3.5 SP1-Anwendung. Was muss ich noch tun, um Uri.EscapeDataString
zur Verwendung der RFC 3986-Regeln zu erhalten? (speziell, um die reservierten Zeichen zu umgehen, wie in diesem RFC definiert)
Ich habe einige Community-Inhalt für den Tippfehler in der Syntax Beispiel hinzugefügt. –
Ich habe dies intern als Bug mit dem .NET Framework abgelegt (ich arbeite für MSFT). Sie erkennen dies als einen Dokumentationsfehler an, da diese Konfigurationseinstellung die Uri-Klasse * nicht * dazu bringt, sich wie RFC 3986 in Bezug auf das Entkommen zu verhalten. –