Asp.net mvc ActionResult使用ToString()重定向呈现
使用以下示例: 下面一行Asp.net mvc ActionResult使用ToString()重定向呈现,asp.net-mvc,dotnetopenauth,actionresult,Asp.net Mvc,Dotnetopenauth,Actionresult,使用以下示例: 下面一行 返回请求RedirectingResponse.AsActionResult() 呈现字符串“DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult”。 这是在发布的行中作为ActionResult返回的类。有人知道为什么我将类名作为字符串而不是实际的重定向吗 提前通知 您的Bin目录和web服务器中是否有多个版本的MVC?我突然想到,如果你有多个MVC类型的程序集(不同版本),比如ActionResult,加载
返回请求RedirectingResponse.AsActionResult()代码>
呈现字符串“DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult”。
这是在发布的行中作为ActionResult返回的类。有人知道为什么我将类名作为字符串而不是实际的重定向吗
提前通知 您的Bin目录和web服务器中是否有多个版本的MVC?我突然想到,如果你有多个MVC类型的程序集(不同版本),比如ActionResult
,加载到你的AppDomain中,AsActionResult
方法返回一个版本,而你的MVCWeb应用程序使用了不同的版本,那么它可能只是用ToString
来摆脱。您正在运行哪个版本的ASP.NET MVC?DotNetOpenAuth的AsActionResult
方法是根据MVC框架的1.0 RTM版本编译的。如果您使用的是ASP.NETMVC2(包含在.NET4.0中),我会发现这可能是一个问题
我相信,如果您将此代码段添加到MVC 2的web.config文件中,它将允许您使用DotNetOpenAuth的正式版本,这样您就不必构建自己的:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
另一个解决方案,为我使用.Net 3.5和MVC 2
而不是
var authRequest = relyingParty.CreateRequest(....);
....
return authRequest.RedirectingResponse.AsActionResult();
使用
函数中的返回类型是什么?ActionResult。。。请查看url中的示例。。。函数是[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get),ValidateInput(false)]public ActionResult OpenIdLogOn(string returnUrl){…}在我看来,链接中提供的代码示例没有问题,DotNetOpenAuth库也没有问题。我已经检查了几次代码,没有太多可能出错的代码。我认为错误在路由或web.config中的某个地方。。。问题是具体在哪里。事实可能就是这样!我会尽快试一试!我已经更改了对MVC2的引用。最初,我收到一个异常,说签名无效,所以我删除了它。我现在得到以下错误(看起来比上一个结果好得多):在ContractHelper.TriggerFailureImplementation(ContractFailureKind kind,String displayMessage,String userMessage,String conditionText,Exception innerException)中使用ContractHelper.TriggerFailure时必须使用重写器(ContractFailureKind种类、String displayMessage、String userMessage、String conditionText、Exception innerException)…此错误是由于以下原因造成的:因此,基本上,DotNetOpenAuth不能以MVC 2为目标?因此,您以MVC 2为目标。MVC 1应该自动重新定位到MVC 2。但是任何MVC 1程序集的存在都可能会打破这一点。您能否确保网站的Bin文件夹中没有任何MVC 1程序集?DNOA可以以MVC为目标2没问题。但是在构建DNOA时必须安装代码契约——否则您将无法获得构建中断,但运行时将无法工作,这不是MVC2,而是代码契约必须在生成的程序集上运行ccrewrite。
var authRequest = relyingParty.CreateRequest(....);
....
authRequest.RedirectToProvider();
Response.End();
return new EmptyResult();