记录方法DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationRequest.RedirectToProvider()
永远不会返回:
将用户代理重定向到 认证提供者。执行 当前页面的终止后 这个电话。
但是,它确实在最新的实施(3.4.3)下返回。我正在使用以下代码:
using (var relayingParty = new OpenIdRelyingParty())
{
var response = relayingParty.GetResponse();
if (response == null)
{
// Stage 2: user submitting Identifier
var openId = Request.Form["openId"];
relayingParty.CreateRequest(openId).RedirectToProvider();
throw new Exception("Never gets here");
}
...
}
(到达“永不到达这里”的行)。我需要从这个方法返回一个ActionResult ......
据我所知,这是项目问题跟踪器中的错误 - I submitted it。
答案 0 :(得分:5)
由于您使用的是ASP.NET MVC,因此您应该使用以下代码:
using DotNetOpenAuth.Messaging; // required for the extension method to work
return relyingParty.CreateRequest(openid).RedirectingResponse.AsActionResult();
显然,ASP.NET通常会因RedirectToProvider()
调用而抛出异常,但并非总是如此。但上面的代码将起作用,并且更加适合MVC。