使用以下示例: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();