.NET 2和4之间的URI差异

时间:2012-11-30 16:36:38

标签: asp.net .net-4.0 .net-2.0 uri

我正在生成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个和最后一个段“登录”?这有什么用?

1 个答案:

答案 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;
}