我正在生成URI
,如下所示(此代码已简化并伪造):
Uri baseUri = "http://localhost/MyApp/Account/Login";
Uri fullUri = GetFullUri(baseUri, user);
GetFullUri看起来像这样(这是在.NET 2程序集中):
public Uri GetFullUri(Uri baseUri, User user)
{
string token = GetTokenFromUser(user); //Implementation not important.
//Create a new URI based on the base URI, adding a query string.
return new Uri(baseUri, string.Format("?Token={0}", token));
}
从.NET 4程序集调用GetFullUri
,结果是正确的,fullUri
看起来像:
http://localhost/MyApp/Account/Login?Token=ABC123
然后我从.NET 2程序集调用相同的确切代码,结果不正确,fullUri
看起来像:
http://localhost/MyApp/Account/?Token=ABC123
请注意.NET 2结果如何缺少第4个和最后一个段“登录”?这有什么用?
答案 0 :(得分:1)
看起来像是在.NET 4.0中修复的错误。尝试使用UriBuilder
,它适用于:
public Uri GetFullUri(Uri baseUri, User user)
{
string token = GetTokenFromUser(user); //Implementation not important.
var builder = new UriBuilder(baseUri);
builder.Query = string.Format("Token={0}", token);
return builder.Uri;
}