使用以下示例:http://www.west-wind.com/Weblog/posts/899303.aspx
以下一行......
return req.RedirectingResponse.AsActionResult();
呈现字符串“DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult”。 这是作为已发布的行中的ActionResult返回的类。有谁知道为什么我把类名称作为字符串而不是实际的重定向?
Thnx提前!
答案 0 :(得分:4)
您的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>
答案 1 :(得分:1)
另一种解决方案,使用.Net 3.5和MVC 2为我工作。
而不是
var authRequest = relyingParty.CreateRequest(....);
....
return authRequest.RedirectingResponse.AsActionResult();
使用
var authRequest = relyingParty.CreateRequest(....);
....
authRequest.RedirectToProvider();
Response.End();
return new EmptyResult();