我的問題是,爲什麼當我點擊按鈕的OpenID,我加入到我的網站下面德過程中,我得到的時候使用OpenIdPortableArea,UriFormatException:MVC3,使用登錄控件
[UriFormatException: Invalid URI: The format of the URI could not be determined.]
System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) +6235084
System.Uri..ctor(String uriString) +20
OpenIdPortableArea.Areas.OpenId.Controllers.OpenIdController.GetAppRoot(HttpRequestBase request) +202
OpenIdPortableArea.Areas.OpenId.Controllers.OpenIdController.GetCallBackUrl(String url) +182
OpenIdPortableArea.Areas.OpenId.Controllers.OpenIdController.Login(LoginInput loginInput) +120
我認爲它不理解的URI是它正在形成的回調url,比如它不知道我的網站是什麼?但這只是堆棧跟蹤的猜測。
我做了什麼:
我使用MVC3在.NET 4
我安裝OpenIdPortableArea(documentation)由
PM> Install-Package OpenIdPortableArea.RazorViews
在剛剛創建的MVC項目。那很好。我從web.config中刪除:
<section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, ...
由於在.NET 4中我相信這是在machine.config中照顧(並讓它在那裏造成一旦部署內部服務器錯誤)。然後,我創建的消息處理程序,逐字從文檔,並把這些調用到的Application_Start
MvcContrib.Bus.AddMessageHandler(typeof(ClaimsRequestMessageHandler));
MvcContrib.Bus.AddMessageHandler(typeof(AuthenticatedMessageHandler));
我換成股票_LoginPartial.cshtml與內容:
@using OpenIdPortableArea.UI
@Html.LoginStatusWidget()
所以,現在當我點擊登錄,我得到的標誌,並可以鍵入我的開放標識或點擊雅虎,谷歌,AOL,myopenid圖標...但他們都給我上面的錯誤。我想我沒有做任何事情來告訴OpenIdPortableArea我的網站的基本網址?
(DOTNET openaugh和MVC的contrib被underptinning OpenIdPortableArea的,解釋標記)
可能是固定的庫中最近的一個bug。 – 2012-03-09 15:00:59
此外,您不需要再調用AddMessageHandler。 PortableAreas現在自動註冊他們自己的消息處理程序。 – 2012-03-09 15:02:13