我有一些使用普通旧IHttpHandler的REST服务.我想生成更干净的URL,以便我在路径中没有.ashx.有没有办法使用ASP.NET路由创建映射到ashx处理程序的路由?我以前见过这些类型的路线:
// Route to an aspx page
RouteTable.Routes.MapPageRoute("route-name",
"some/path/{arg}",
"~/Pages/SomePage.aspx");
// Route for a WCF service
RouteTable.Routes.Add(new ServiceRoute("Services/SomeService",
new WebServiceHostFactory(),
typeof(SomeService)));
Run Code Online (Sandbox Code Playgroud)
尝试使用会RouteTable.Routes.MapPageRoute()产生错误(处理程序不会派生出错Page). System.Web.Routing.RouteBase似乎只有2个派生类:ServiceRoute用于服务,DynamicDataRoute用于MVC.我不确定是什么MapPageRoute()(Reflector没有显示方法体,它只显示"在NGen图像边界内嵌这种方法的性能至关重要").
我看到它RouteBase没有密封,并且有一个相对简单的界面:
public abstract RouteData GetRouteData(HttpContextBase httpContext);
public abstract VirtualPathData GetVirtualPath(RequestContext requestContext,
RouteValueDictionary values);
Run Code Online (Sandbox Code Playgroud)
所以也许我可以制作自己的HttpHandlerRoute.我会给出一个镜头,但如果有人知道现有的或内置的映射路由到IHttpHandlers的方式,这将是伟大的.