Метод 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 из этого метода...
Насколько я понимаю, что это - ошибка - я отправил его в системе отслеживания ошибок проекта.
Поскольку вы используете ASP.NET MVC, вам следует использовать этот код:
using DotNetOpenAuth.Messaging; // required for the extension method to work
return relyingParty.CreateRequest(openid).RedirectingResponse.AsActionResult();
Очевидно, ASP.NET обычно выдает исключение в результате RedirectToProvider ()
вызов, но не всегда. Но приведенный выше код будет работать и более дружелюбен к MVC.