从 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 页面的主要内容,如果未能解决你的问题,请参考以下文章