Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.net路由结果为404_Asp.net_Routing - Fatal编程技术网

ASP.net路由结果为404

ASP.net路由结果为404,asp.net,routing,Asp.net,Routing,正如许多教程所指示的那样,我已经在Application_Start中定义了一个路由 RouteTable.Routes.Add( "Files", new Route("Files/Art", new FileRouteHandler())); 创建了我自己的路线管理员。然而,这似乎根本不起作用 当我调试应用程序时,我可以看到(通过断点)添加了路由,但是当我浏览到“”时,我会看到浏览器404(而不是ASP.net

正如许多教程所指示的那样,我已经在Application_Start中定义了一个路由

RouteTable.Routes.Add(
            "Files",
            new Route("Files/Art",
                new FileRouteHandler()));
创建了我自己的路线管理员。然而,这似乎根本不起作用

当我调试应用程序时,我可以看到(通过断点)添加了路由,但是当我浏览到“”时,我会看到浏览器404(而不是ASP.net 404)

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

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


我这里缺少什么?

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

<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> 

... 
... 

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

简短回答:对于IIS6及以下版本(在我的例子中是5.1),像“Files/Art”这样的路径不起作用。它不会被传递到ASP.net。但是,诸如“Files.svc/Art”之类的路径将起作用

关键是IIS6及以下版本需要一个文件扩展名来知道ISAPI插件要使用什么。在我的例子中,.svc被配置为使用ASP.net


希望这是有意义的…

是的,我已经准备好了。同样的问题。