我在.NET中发现了一个奇怪的行为UriBuilder
Senario 1:
Dim uri As New UriBuilder("http://www.test/login.aspx")
uri.Query = "?test=Test"
Dim url As String = uri.ToString()运行此代码后,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()在代码运行之后,我们又有了两个?"http://www.test:80/login.aspx??test=123&abc=Test"。
那么,在使用uri构建器时,我做错了什么吗?
发布于 2012-06-18 21:01:04
根据该类的MSDN docs上的注释,如果多次设置查询属性,则会出现此错误。
刚刚在反编译器中查看过,如果设置的值不为空,则Query的设置器总是预先设置一个前导?。
发布于 2012-10-26 20:31:10
下面的示例设置Query属性。
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;第一个字符?不是必需的。
更多信息:http://msdn.microsoft.com/en-us/library/system.uribuilder.query.aspx
https://stackoverflow.com/questions/11083277
复制相似问题