UriBuilder.Query

Pet*_*ter 8 .net uribuilder

我在.NET中发现了一个奇怪的行为UriBuilder

Senario 1:

 Dim uri As New UriBuilder("http://www.test/login.aspx")
 uri.Query = "?test=Test"
 Dim url As String = uri.ToString()
Run Code Online (Sandbox Code Playgroud)

运行此代码后,url字符串包含"http://www.test/login.aspx ?? test = Test"

解决方法是不添加?.

Senario 2:

 Dim uri As New UriBuilder("http://www.test/login.aspx?test=123")
 uri.Query += "&abc=Test"
 Dim url As String = uri.ToString()
Run Code Online (Sandbox Code Playgroud)

运行该代码之后我们还有两个?的 "http://www.test:80/login.aspx的??测试= 123&ABC =测试".

在使用uri构建器时,我做错了吗?

小智 8

The following example sets the Query property.

   UriBuilder baseUri = new UriBuilder("http://www.contoso.com/default.aspx?Param1=7890");
   string queryToAppend = "param2=1234";

   if (baseUri.Query != null && baseUri.Query.Length > 1)
       baseUri.Query = baseUri.Query.Substring(1) + "&" + queryToAppend; 
   else
       baseUri.Query = queryToAppend;
Run Code Online (Sandbox Code Playgroud)

The first char ? is not necessary.

More info: http://msdn.microsoft.com/en-us/library/system.uribuilder.query.aspx


adr*_*nks 6

根据对该类的MSDN文档的评论,如果您多次设置查询属性,则会出现此错误.

刚看了一个反编译器,?如果设置的值不为空,则查询的setter总是会有一个前导.