我的问题是,为什么当我点击按钮的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