在MVC 3 RC中实现TransferResult - 不起作用

And*_*ndy 5 asp.net-mvc server.transfer asp.net-mvc-3

任何想法如何解决以下问题?

有一个伟大的实施提供TransferResult的位置,这对MVC 1,2伟大的工作,但对MVC 3 RC不起作用.

public class TransferResult : RedirectResult 
{ 
    public TransferResult(string url): base(url) 
    { 
    } 

    public override void ExecuteResult(ControllerContext context) 
    { 
        var httpContext = HttpContext.Current; 
        httpContext.RewritePath(Url, false); 
        IHttpHandler httpHandler = new MvcHttpHandler(); 
        httpHandler.ProcessRequest(HttpContext.Current); 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

在MVC 3 RC上,httpHandler.ProcessRequest失败并说 'HttpContext.SetSessionStateBehavior' can only be invoked before 'HttpApplication.AcquireRequestState' event is raised.

如何重写此代码以使其工作?

UPD:如果在VS 2010内置开发服务器上运行,代码可以工作,但无法在IIS 7.5 localhost上运行.问题仍未解决.

UPD2这个答案包含一个与MVC3一起使用的TransferResult 的修改实现.事实证明它比过去更简单.

Ian*_*cer 0

就我个人而言,我认为创建路由(如有必要,请使用路由约束(请参阅http://stephenwalther.com/blog/archive/2008/08/07/asp-net-mvc-tip-30-create-custom-route-constraints)。 aspx)比这种尝试执行不可见的重定向的“黑客”要好得多,以便由与路由指定的控制器和操作不同的控制器和操作来处理请求。

为什么不能只使用路由呢?