我在編程上做了與雅虎和谷歌openid握手。谷歌是好的,但雅虎引發空指針:nullpointer爲雅虎openid請求,但不是谷歌(dotnetopenid)
堆棧跟蹤:
System.NullReferenceException: Object reference not set to an instance of an object.
at DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy.PolicyResponse.DotNetOpenAuth.Messaging.IMessageWithEvents.OnReceiving() in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\OpenId\Extensions\ProviderAuthenticationPolicy\PolicyResponse.cs:line 189
at DotNetOpenAuth.OpenId.ChannelElements.ExtensionsBindingElement.<GetExtensions>d__a.MoveNext() in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\OpenId\ChannelElements\ExtensionsBindingElement.cs:line 209
at DotNetOpenAuth.OpenId.ChannelElements.ExtensionsBindingElement.ProcessIncomingMessage(IProtocolMessage message) in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\OpenId\ChannelElements\ExtensionsBindingElement.cs:line 151
at DotNetOpenAuth.Messaging.Channel.ProcessIncomingMessage(IProtocolMessage message) in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\Messaging\Channel.cs:line 906
at DotNetOpenAuth.OpenId.ChannelElements.OpenIdChannel.ProcessIncomingMessage(IProtocolMessage message) in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\OpenId\ChannelElements\OpenIdChannel.cs:line 171
at DotNetOpenAuth.Messaging.Channel.ReadFromRequest(HttpRequestInfo httpRequest) in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\Messaging\Channel.cs:line 377
at DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.GetResponse(HttpRequestInfo httpRequestInfo) in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\OpenId\RelyingParty\OpenIdRelyingParty.cs:line 489
at DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.GetResponse() in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\OpenId\RelyingParty\OpenIdRelyingParty.cs:line 478
at Friendsell.UI.Controllers.Auth.OpenIdReturnController.DoProcessRequest(IExecutionContext context) in C:\Development\Friendsell\Friendsell.UI\Controllers\Auth\OpenIdController.cs:line 41
at Bistro.Controllers.AbstractController.ProcessRequest(HttpContextBase context, IContext requestContext) in C:\Development\Bistro\Bistro.Core\Controllers\AbstractController.cs:line 41
at Bistro.Controllers.MethodDispatcher.InvokeMethodDirect(HttpContextBase context, String requestPoint, IContext requestContext) in C:\Development\Bistro\Bistro.Core\Controllers\MethodDispatcher.cs:line 221
at Bistro.Controllers.MethodDispatcher.InvokeMethod(HttpContextBase context, String requestPoint, IContext requestContext) in C:\Development\Bistro\Bistro.Core\Controllers\MethodDispatcher.cs:line 119
調用代碼:
var openid = new OpenIdRelyingParty();
IAuthenticationRequest request = openid.CreateRequest(
Identifier.Parse(
GetEndpoint()),
new Realm(realm),
new Uri(returnUri));
// Require some additional data
request.AddExtension(new ClaimsRequest
{
Email = DemandLevel.Require,
FullName = DemandLevel.Request,
PostalCode = DemandLevel.Request
});
try
{
request.RedirectToProvider();
} catch (ThreadAbortException)
{
}
接收代碼(和異常的來源)
var openId = new OpenIdRelyingParty();
var response = openId.GetResponse(); <-- exception happens here
給出了什麼?奇怪的是,雅虎一塊最近工作,我沒有改變庫版本...
是的。而已。 – 2009-12-08 07:36:24