我可以(不使用runAllManagedModulesForAllRequests = true)用*.html将urls路由到默认的控制器/操作模式吗?
我需要所有的请求:www.myhost.com/any/any/ all d.html到www.myhost.com/home/oldlink与"link“RouteData key =”any/any/all d.html“。
我尝试了MapRoute与{*链接}和约束链接= ".html$",但所有的请求与点捕捉StaticFileHandler.
发布于 2013-02-16 20:06:58
您可以使用这样的路线:
routes.MapRoute("", "{*link}",
new { action = "oldlink", controller = "home" });这将将所有请求定向到以下控制器和操作方法:
public class HomeController : Controller
{
public ActionResult OldLink(string link)
{
//implement method...
return View((object)link);
}
}星号表示该段是所谓的“集水区”段。这允许您将任意长度的URL匹配到单个路由。在此路由中,URL中主机名之后的所有段都分配给"link“字符串变量。
例如,输入URL:
http://localhost/foo/bar/file.html它将路由到OldLink方法,"link“字符串变量将具有以下值
"foo/bar/file.html"关于这条路线,有几点要注意:
有关URL段中所有路由段的更多信息,请参见这个优秀的MSDN关于路由的文章中题为“处理URL模式中可变数量的段”的部分。有关RouteExistingFiles属性的详细信息,请看这里。
https://stackoverflow.com/questions/14819837
复制相似问题