Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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
C# 如何在web api项目中执行Routes.IgnoreRoute?_C#_Asp.net Mvc 4_Asp.net Web Api - Fatal编程技术网

C# 如何在web api项目中执行Routes.IgnoreRoute?

C# 如何在web api项目中执行Routes.IgnoreRoute?,c#,asp.net-mvc-4,asp.net-web-api,C#,Asp.net Mvc 4,Asp.net Web Api,在我的web api项目应用程序_Start()方法中,我将执行以下操作以支持elmah.axd RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 但这需要依赖于System.Web.Mvc和相关的dll,比如System.Web.WebPages,这在我的Web api项目中并不是我真正想要的。有没有办法在不引入所有dll的情况下获得IgnoreRoutes功能?不幸的是,ASP.NET Web API的路由系统不支持Ig

在我的web api项目应用程序_Start()方法中,我将执行以下操作以支持elmah.axd

RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

但这需要依赖于System.Web.Mvc和相关的dll,比如System.Web.WebPages,这在我的Web api项目中并不是我真正想要的。有没有办法在不引入所有dll的情况下获得IgnoreRoutes功能?

不幸的是,ASP.NET Web API的路由系统不支持IgnoreRoutes。但是,如果应用程序托管在ASP.NET中(而不是作为SelfHost应用程序托管),您仍然可以向RouteTable添加IgnoreRoute(就像在MVC中一样)。

WebApi 2.1现在实现了IgnoreRoute扩展方法的一个版本

config.Routes.IgnoreRoute("elmah", "{resource}.axd/{*pathInfo}");
在引擎盖下,这将创建一个System.Web.Http.Routing.StopRoutingHandler,然后再创建一个System.Web.Routing.StopRoutingHandler

然而,在MVC4 WebApi1(由mono支持)下,我无法解决这一问题,但其他人应该避免:

config.Routes.MapHttpRoute(
            name: "ignore",
            routeTemplate: "{resource}.asp/{*pathInfo}",
            handler: new System.Web.Http.Routing.StopRoutingHandler()
);

你能解释一下你想做什么吗?如果您使用web主机(意味着您处于ASP.NET运行时)web API,则引用System.web(路由不是MVC的一部分,它是核心ASP.NET的一部分)是没有问题的,并且如果您使用自主机,那么它无论如何也不能为静态文件提供服务,除非您将它们作为来自控制器的流提供。。