3

使用以下示例:http ://www.west-wind.com/Weblog/posts/899303.aspx

以下行...

return req.RedirectingResponse.AsActionResult();

呈现字符串“DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult”。这是在发布的行中作为 ActionResult 返回的类。有谁知道为什么我将类名作为字符串而不是实际重定向?

提前谢谢!

4

2 回答 2

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>
于 2009-12-22T17:14:23.327 回答
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();
于 2012-01-12T16:19:28.597 回答