Die Eigenschaft UriBuilder.Query
"enthält alle im URI enthaltenen Abfragedaten." According to the docs, "die Abfrage-Informationen sind gemäß RFC 2396 maskiert."Warum flieht UriBuilder.query nicht (URL-Codierung) die Abfragezeichenfolge?
Basierend darauf, und da diese Eigenschaft beschreibbar ist, nahm ich an, dass System.UriBuilder
Ihre Abfragezeichenfolge und Escape (URL-Codierung) nach RFC 2396 analysieren würde. Insbesondere sind {und} nicht im nicht reservierten Zeichensatz und so they should be escaped according to page 9 of RFC 2396. Aber es scheint, dass System.UriBuilder
kein Entkommen tut.
Muss ich manuell Server.URLEncode die Parameter, oder gibt es eine Möglichkeit, System.UriBuilder
mit der Codierung umzugehen?
Hier ist mein Beispielcode. Sie können run this on ideone.com and see that, indeed, nothing is URL encoded.
using System;
public class Test
{
public static void Main()
{
var baseUrl = new System.Uri("http://www.bing.com");
var builder = new System.UriBuilder(baseUrl);
string name = "param";
string val = "{'blah'}";
builder.Query = name + "=" + val;
// Try several different ouput methods; none will be URL encoded
Console.WriteLine(builder.ToString());
Console.WriteLine(builder.Uri.ToString());
Console.WriteLine(builder.Query);
}
}
Ich kann keinen offensichtlichen Code sehen, der irgendeine Art von Konvertierung ausführen würde. Ich frage mich, ob die Dokumentation ist unglaublich schlecht formuliert und sollte sagen, dass der Wert sollte gemäß RFC2396 entkommen. –
Ja, wenn die Dokumente sagen, dass die Abfrage maskiert ist, bedeutet dies, dass die Query-Eigenschaft eines Uri-Objekts beim Lesen maskierte Daten enthält. Wenn Sie diese Daten selbst festlegen, müssen Sie zunächst maskierte Daten angeben. Wenn es Daten für Sie entkam, würde dies zu einem extrem fehleranfälligen '+ =' Workflow führen. – Cameron
@Damien_The_Unbeliever, hatte ich gefragt, ob vielleicht in der Dokumentation „Abfrageinformationen entkommen“ sollte „Abfrage Informationen sollten entkommen werden“, oder noch deutlicher zu sein „sollten Sie Abfrageinformationen entkommen, bevor es auf diese Eigenschaft zu schreiben.“ – Josh