使用以下示例:http ://www.west-wind.com/Weblog/posts/899303.aspx
以下行...
return req.RedirectingResponse.AsActionResult();
呈现字符串“DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult”。这是在发布的行中作为 ActionResult 返回的类。有谁知道为什么我将类名作为字符串而不是实际重定向?
提前谢谢!
使用以下示例:http ://www.west-wind.com/Weblog/posts/899303.aspx
以下行...
return req.RedirectingResponse.AsActionResult();
呈现字符串“DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult”。这是在发布的行中作为 ActionResult 返回的类。有谁知道为什么我将类名作为字符串而不是实际重定向?
提前谢谢!
会不会是您的 Bin 目录和 Web 服务器中有多个版本的 MVC?让我感到震惊的是,如果您有多个 MVC 类型的程序集(不同版本),例如ActionResult
加载到您的 AppDomain 中,并且该AsActionResult
方法返回一个版本并且您的 MVC Web 应用程序使用不同的版本,那么它可能只是使用ToString
. 您正在运行什么版本的 ASP.NET MVC?DotNetOpenAuth 的AsActionResult
方法是针对 MVC 框架的 1.0 RTM 版本编译的。如果您使用的是 ASP.NET MVC 2(包含在 .NET 4.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();
采用
var authRequest = relyingParty.CreateRequest(....);
....
authRequest.RedirectToProvider();
Response.End();
return new EmptyResult();