DotnetopenAuth throws a "ProtocolException
I am trying to implement OpeinID login with ASP.NET MVC. I am trying to follow steps given as in http://blog.nerdbank.net/2008/04/add-openid-login-support-to-your-aspnet.html
Below is my settings web.config
<dotNetOpenAuth>
<messaging>
<untrustedWebRequest>
<whitelistHosts>
<add name="localhost" />
</whitelistHosts>
</untrustedWebRequest>
</messaging>
<reporting enabled="false" />
<system.net>
<defaultProxy useDefaultCredentials="true">
<proxy autoDetect="True" usesystemdefault="True"/>
</defaultProxy>
I get the 'ProtocolException' saying 'No openId end point found' when I try to create a request.
try
{
//ProtocolException is thrown
IAuthenticationRequest request = openID.CreateRequest(openid_identifier);
request.RedirectToProvider();
}
catch (ProtocolException )
{
throw;
}
Log File generated by Dotnetopenauth. (I have replaced my valid userid with <myopenid>
)
{INFO}06/07 17:24:45 - Performing discovery on user-supplied identifier: http://<myopenid>.myopenid.com/
{DEBUG}06/07 17:24:45 - Filtering and sorting of endpoints did not affect the list.
{INFO}06/07 17:30:03 - DotNetOpenAuth, Version=3.4.7.11121, Culture=neutral, PublicKeyToken=2780ccd10d57b246 (official)
{INFO}06/07 17:30:03 - Scanning incoming request for messages: http://localhost/OpenID/User/Authenticate
{DEBUG}06/07 17:30:03 - Incoming HTTP request: POST http://localhost/OpenID/User/Authenticate
{DEBUG}06/07 17:30:31 - .NET Uri class path compression overridden.
{DEBUG}06/07 17:30:31 - HTTP GET http://<myopenid>.myopenid.com/
{ERROR}06/07 17:30:55 - WebException ConnectFailure from http://<myopenid>.myopenid.com/, no response available.
{ERROR}06/07 17:30:55 - Error while performing discovery on: "http://<myopenid>.myopenid.com/": DotNetOpenAuth.Messaging.ProtocolException: Error occurred while sending a direct message or getting the response. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond开发者_JAVA技巧 after a period of time, or established connection failed because connected host has failed to respond 50.16.193.31:80
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetResponse()
at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options)
--- End of inner exception stack trace ---
at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options)
at DotNetOpenAuth.Messaging.UntrustedWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options)
at DotNetOpenAuth.Yadis.Yadis.Request(IDirectWebRequestHandler requestHandler, Uri uri, Boolean requireSsl, String[] acceptTypes)
at DotNetOpenAuth.Yadis.Yadis.Discover(IDirectWebRequestHandler requestHandler, UriIdentifier uri, Boolean requireSsl)
at DotNetOpenAuth.OpenId.UriDiscoveryService.Discover(Identifier identifier, IDirectWebRequestHandler requestHandler, Boolean& abortDiscoveryChain)
at DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.Discover(Identifier identifier)
at DotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequest.Create(Identifier userSuppliedIdentifier, OpenIdRelyingParty relyingParty, Realm realm, Uri returnToUrl, Boolean createNewAssociationsAsNeeded)
I then checked with fiddler and I see no request getting generated to get the URI. It seems that dotnetopenauth is not able to generate the request and is failing there.
Can anybody please help me out here? Anything that I am missing?
I am working from behind a proxy.
All I can suggest is that you write a trivial C# console app that uses HttpWebRequest
to download the page from your OpenID URL that you're typing into DotNetOpenAuth so you can see the failure yourself, and diagnose what's wrong with your firewall/proxy settings.
I had the same problem as you, and it worked if I removed the proxy autodetect. Therefore, in web.config system.net section, only:
This configuration allowed me to work from behind a corporate proxy server as well as with using Fiddler.
精彩评论