ASP.net路由结果为404

时间:2010-01-21 20:03:08

标签: asp.net routing

我已经在Application_Start中定义了一个路由,因为很多教程都指示了

RouteTable.Routes.Add(
            "Files",
            new Route("Files/Art",
                new FileRouteHandler()));

创建了我自己的RouteHandler。然而,这似乎根本不起作用。

当我调试应用程序时,我可以看到(通过断点)路由被添加,但是当我浏览到“http://localhost/MyApplication/Files/Art”时,我得到一个浏览器404(不是ASP.net 404)。

当我在路由处理程序中放置一个断点时,它在访问URL时不会中断。 Application_BeginRequest中的断点在访问URL时也不会中断。

这是一个问题,但我完全理解为什么我会得到一个通用的404. IIS怎么会知道用asp.net处理这个URL,毕竟它不存在?

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

确保您在UrlRoutingModule中安装并配置了web.config。类似于下面显示的内容:

<system.web> 
      ... 
      <httpModules> 
         ... 
         <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      </httpModules>
   </system.web> 

答案 1 :(得分:1)

我知道这是一个Web服务器问题......

http://www.asp.net/%28S%28pdfrohu0ajmwt445fanvj2r3%29%29/learn/mvc/tutorial-08-vb.aspx

简短回答:对于IIS 6及更低版本(在我的情况下为5.1),诸如“文件/艺术”之类的路径不起作用。它不会传递给ASP.net。但是,诸如“Files.svc / Art”之类的路径将起作用。

重点是IIS 6及更低版本需要一个文件扩展名才能知道要使用的ISAPI插件。在我的情况下,“。svc”被配置为使用ASP.net。

希望有道理......