将所有请求重定向到IIS6上的ASP.NET MVC

问题描述:

我可能忽略了一些非常简单的东西,但我试图将所有不良URL重定向到根据条件筛选URL的操作,然后将301重定向到合适的页面或发出404页面。将所有请求重定向到IIS6上的ASP.NET MVC

为此我有一个这样的路线在我的路由表的末尾:

routes.MapRoute("Error", "{*url}", new { controller = "Main", action = "Error" }); 

而且像这样的动作:

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... */)); 
} 

这工作完全在本地。

但是,当部署到IIS6时,不包含.mvc(例如oldfile.php)的URL将不会发送到ASP.NET进程进行路由。

有没有简单的解决方案/我可以忽略一些东西?

编辑: 这与this question有关,但是在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/

+0

的我第一次尝试这个我没注意到,“确认文件是否存在”需要的是听之任之。 – Pedro 2017-07-26 19:57:53