我已经在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,毕竟它不存在?
我在这里缺少什么?
答案 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。
希望有道理......