PrepareRequestUserAuthorizationAsync失败

Gri*_*uev 7 c# asp.net-mvc dotnetopenauth asp.net-mvc-5

我有非常简单的代码,对我来说很好:

var url = System.Web.HttpContext.Current.Request.Url;
Uri callbackUrl = new System.Uri(url, "oAuth2CallBack");

var ub = new UriBuilder(callbackUrl);
// decodes urlencoded pairs from uri.Query to var
var httpValueCollection = HttpUtility.ParseQueryString(callbackUrl.Query);
httpValueCollection.Add(UrlArguments.Param, null);

// urlencodes the whole HttpValueCollection
ub.Query = httpValueCollection.ToString();

var authorizationRequest = OAuthClient.PrepareRequestUserAuthorization(new[] { "somedata" }, ub.Uri);
authorizationRequest.Send();
Run Code Online (Sandbox Code Playgroud)

我更新了OAuth的NuGet包并以这种方式重写代码:

var url = System.Web.HttpContext.Current.Request.Url;
Uri callbackUrl = new System.Uri(url, "oAuth2CallBack");


var ub = new UriBuilder(callbackUrl);
// decodes urlencoded pairs from uri.Query to var
var httpValueCollection = HttpUtility.ParseQueryString(callbackUrl.Query);
httpValueCollection.Add(UrlArguments.Param, null);

// urlencodes the whole HttpValueCollection
ub.Query = httpValueCollection.ToString();

var client = new WebServerClient(new AuthorizationServerDescription
{
    TokenEndpoint = Configuration.OAuth2.TokenEndpoint,
    AuthorizationEndpoint = Configuration.OAuth2.AuthorizationEndpoint,
},
                clientIdentifier: Configuration.OAuth2.ClientIdentifier,
                clientCredentialApplicator: ClientCredentialApplicator.PostParameter(
                                        Configuration.OAuth2.ClientSecret));

var authorizationRequest = await client.PrepareRequestUserAuthorizationAsync(new[] { "somedata" }, ub.Uri);
await authorizationRequest.SendAsync();            
Run Code Online (Sandbox Code Playgroud)

PrepareRequestUserAuthorizationAsync抛出异常

"通过'DotNetOpenAuth.OAuth2.WebServerClient + d _3.MoveNext()'方法尝试访问方法'System.Collections.Generic.List`1..ctor()'失败."

Ric*_*tte 1

问题是 DotNetOpenAuth.OAuth2.Client 从 WebApi nuget 包引用 System.Net.Http.Formatters 5.0。从 .NET 4.0/4.5 BCL 设置对 System.Net.Http.Formatters 4.0 的引用可以解决该问题,并且所有测试仍然通过。

请参阅 github 上的提交 https://github.com/rcollette/DotNetOpenAuth/commit/59fe1e820fc48df8bb079b210ac585974f8326f5

请参阅拉取请求 https://github.com/DotNetOpenAuth/DotNetOpenAuth/pull/350