2013-11-18 2 views
7

У меня был очень простой код, который работал хорошо для меня:PrepareRequestUserAuthorizationAsync терпит неудачу

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(); 

Я обновил пакеты NuGet OAuth и переписать код следующим образом:

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();    

но PrepareRequestUserAuthorizationAsync кидает исключение

«Попытка по методу » DotNetOpenAuth.OAuth2.WebServerClient + d__3.Mo veNext() ' для доступа к методу ' Ошибка System.Collections.Generic.List`1..ctor(). "

+1

Да, я получаю это тоже не может найти какую-либо документацию на него, это произошло на вар печеньем = новый список < CookieHeaderValue>(); line ... – TobyEvans

+0

такой же для меня как для @TobyEvans !! – oldbrazil

+0

В конце концов, я получил источник и прокомментировал код cookie, который вызывает ошибку, работает сейчас, но я не рад, что буду работать с этим – TobyEvans

ответ

1

Проблема в том, что DotNetOpenAuth.OAuth2.Client ссылается на System.Net.Http.Formatters 5.0 из пакета WebApi nuget. Установка ссылки на System.Net.Http.Formatters 4.0 из .NET 4.0/4.5 BCL устраняет проблему, и все тесты все еще проходят.

См фиксации на GitHub https://github.com/rcollette/DotNetOpenAuth/commit/59fe1e820fc48df8bb079b210ac585974f8326f5

См запрос тянуть https://github.com/DotNetOpenAuth/DotNetOpenAuth/pull/350

Смежные вопросы