2010-04-27 61 views
5

方法DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationRequest.RedirectToProvider()是記錄有去無回: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 ...

  1. 這是一個已知的錯誤?
  2. 有沒有一個aorkaround?我應該返回EmptyResult嗎?

據我瞭解這是一個bug - I submitted it在項目問題跟蹤。

回答

5

由於您使用ASP.NET MVC,您應使用此代碼:

using DotNetOpenAuth.Messaging; // required for the extension method to work 

    return relyingParty.CreateRequest(openid).RedirectingResponse.AsActionResult(); 

顯然ASP.NET通常會拋出一個異常作爲RedirectToProvider()調用的結果,但並非總是如此。但上面的代碼將工作,並更多的MVC友好。

+0

謝謝,我會檢查出來。 – ripper234 2010-04-28 13:27:17

+0

不能編譯。 'DotNetOpenAuth.Messaging.OutgoingWebResponse'不包含'AsActionResponse'的定義 – ripper234 2010-04-29 23:36:55

+0

您是否在文件頂部添加了using語句?你的目標是.NET 3.5嗎? – 2010-04-29 23:49:22

相關問題