从 MVC 4 控制器重定向到 .aspx 页面

Posted

技术标签:

【中文标题】从 MVC 4 控制器重定向到 .aspx 页面【英文标题】:Redirect to an .aspx page from a MVC 4 Controller 【发布时间】:2015-03-12 04:17:06 【问题描述】:

我对 MVC 很陌生,并且一直在努力在各个页面之间进行重定向。 我正在尝试从 am Controller 重定向到项目根文件夹中的 aspx Web 表单页面。

以下是我尝试过的解决方案:

    公共 RedirectResult redirectToAspx() 返回重定向(“~/Buffer.aspx”);

    return 重定向("~/Buffer.aspx");

    取出

    处理程序

    删除名称="BlockViewHandler"/>

    添加 name="BlockViewHandler" path="" verb="" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />

    /处理程序

    来自 System.WebServer

当我在本地计算机上运行项目时,1 和 2 可以工作,但在部署到 Intranet IIS 7 时无法工作。 关于为什么重定向被阻止的任何想法都会有很大帮助?

【问题讨论】:

“不起作用”是什么意思?你应该更具体。 它重定向到我的视图中默认共享文件夹中的 Error.cshtml 并给出错误“处理您的请求时发生错误” 这意味着您遇到了错误,您需要找出错误是什么(在 Windows 事件查看器中检查机器日志,或配置应用程序以显示错误,或将其记录到某种使用ELMAH等工具进行数据存储) 【参考方案1】:

您可以在全局文件中添加Error方法来查找内部异常。

将调试点放在异常行上,然后在 Web 服务器上得到实际错误。

您还应该检查 Web 服务器 IIS Click here 上的处理程序的 mime 类型。

protected void Application_Error(object sender, EventArgs e)
        
            Exception exception = Server.GetLastError();
            Response.Clear();

            HttpException httpException = exception as HttpException;

            if (httpException != null)
            
                string action;
                switch (httpException.GetHttpCode())
                
                    case 404:
                        // page not found
                        action = "HttpError404";
                        break;
                    case 500:
                        // server error
                        action = "HttpError500";
                        break;
                    default:
                        action = "Index";
                        break;
                

                // clear error on server
                Server.ClearError();

                Response.Redirect(String.Format("~/Error/0/?message=1", action, exception.Message));
            
        

您也可以在 web.config 中使用<customErrors mode="Off" /> 来查找网页上的错误。

【讨论】:

感谢您的信息。我在 Global.asax 中添加了上述方法,但仍然没有看到任何特定的错误消息。我也在我的本地机器上开发,然后将项目上传到网络服务器,所以没有办法进行点中断调试,并且重定向在我的本地主机上工作正常。我也尝试过 RedirectToAction 和 RedirectToRoute 两者都不能在 IIS 上工作。

以上是关于从 MVC 4 控制器重定向到 .aspx 页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在控制器操作中重定向到 aspx 页面

从 ASP.NET MVC 控制器重定向到外部 URI

服务器重定向和客户端重定向

Javascript发布请求回调,从.NET MVC控制器重定向

aspx 页面重定向到新页面

从基本控制器重定向到操作方法