我的问题是,为什么当我点击我在以下teh程序添加到我的网站的openid按钮时,我能得到:
[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是它正在形成的回调网址,就像它不知道我的网站是什么一样?但这只是堆栈跟踪的猜测。
我做了什么:
我在.Net 4上使用MVC3。
我通过
安装了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中已经处理好了(并且在那里部署它会导致内部服务器错误)。然后我从文档中逐字创建了Message处理程序,并将这些调用放入Application_Start
MvcContrib.Bus.AddMessageHandler(typeof(ClaimsRequestMessageHandler));
MvcContrib.Bus.AddMessageHandler(typeof(AuthenticatedMessageHandler));
我将股票_LoginPartial.cshtml的内容替换为:
@using OpenIdPortableArea.UI
@Html.LoginStatusWidget()
所以现在当我点击登录时,我会获得徽标,并可以输入我的开放ID或点击yahoo,google,aol,myopenid的图标......但是他们都给我上面的错误。我想我还没有做任何我需要做的事情来告诉OpenIdPortableArea我网站的基本网址?
(dotnet openaugh和mvc contrib正在OpenIdPortableArea,解释标记)
答案 0 :(得分:1)
问题来自库中的错误,现在已在最新版本(2.0.0.2 available now on NuGet)中修复。该错误与构建返回URL以发送给OpenID提供程序有关。