Mat*_*ell 2 asp.net-mvc redirect iis-6 http-status-code-404
我可能忽略了一些非常简单的东西,但我试图将所有错误的URL重定向到根据条件过滤URL的操作,然后301重定向到合适的页面或发出404页面.
为此,我在路由表的末尾有这样的路由:
routes.MapRoute("Error", "{*url}", new { controller = "Main", action = "Error" });
Run Code Online (Sandbox Code Playgroud)
这样的动作:
public ActionResult Error(string url)
{
if (/* Conditions are met... */)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", /* Destination URL */);
Response.End();
}
Response.StatusCode = 404;
return View(/* 404 page... */));
}
Run Code Online (Sandbox Code Playgroud)
这在当地非常有效.
但是,当部署到IIS6时,不包含.mvc(例如oldfile.php)的URL永远不会发送到ASP.NET进程进行路由.
有一个简单的解决方案/我忽略了什么吗?
编辑:这与此问题有关,但在IIS6下,没有.mvc的URL不会被发送用于ASP.NET MVC处理.
部署到服务器时,很可能不会调用ASP.Net.
我会在IIS中设置通配符映射,因此您的请求将使用ASP.Net来处理请求.
打开IIS管理器,右键单击您的应用程序,转到"属性",然后单击"主目录"选项卡,再单击"配置".在通配符应用程序映射下,单击"插入"(不是"添加",这在上面令人困惑),然后为"可执行文件"输入C:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,并取消选中"验证文件是否存在".
有关更多信息,请访问帮助我解决此问题的来源:http: //blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/
| 归档时间: |
|
| 查看次数: |
1978 次 |
| 最近记录: |