我试图抓住像this...但是
这样的404错误我的路线:
routes.Add("Order", new LowercaseRoute("Order/{action}/{id}",
new RouteValueDictionary(
new
{
controller = "Order",
action = "",
id = UrlParameter.Optional
}),
new MvcRouteHandler()));
routes.Add("NotFound", new LowercaseRoute("{*url}", new RouteValueDictionary(
new
{
controller = "Pages",
action = "Http404",
}),
new MvcRouteHandler()));
为什么路由 NotFound - 不要捕获所有404错误。当我尝试上传到我的主机并尝试404我得到此错误(NotFound路线根本不起作用) 404 - 找不到文件或目录。 您要查找的资源可能已被删除,名称已更改或暂时不可用。
我整天都在工作,但不是......请帮帮我
答案 0 :(得分:2)
当我尝试加载http://localhost:11415/order/时 - 失败(错误)RouteData必须包含一个名为'action'且带有非空字符串值的项。)
因此:
new {controller =“Order”, action =“”,id = UrlParameter.Optional}
您需要指定一个操作。
当我尝试加载http://localhost:11415/Images/时 - 失败并显示错误文件不存在
如果您的服务器上有Images
个文件夹,那么它将“拦截”不让它们通过MVC管道的请求。
答案 1 :(得分:2)
我做到了:
routes.Add("NotFound", new LowercaseRoute("{*url}", new RouteValueDictionary(
new
{
controller = "Pages",
action = "Http404",
}),
new MvcRouteHandler()));
,这在web.config
中 <customErrors mode="On">
</customErrors>
和
<modules runAllManagedModulesForAllRequests="true"/>
<handlers/>
<httpErrors>
<remove statusCode="404"/>
<error statusCode="404" path="/page/http404/" responseMode="ExecuteURL"/>
</httpErrors>
这是我想要的方式。