У меня есть некоторые службы REST, использующие простые старые IHttpHandler
s. Я хотел бы создать более чистые 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)));
Попытка использовать 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);
Так что, возможно, я могу создать свой собственный HttpHandlerRoute. Я дам этот снимок, но если кто-нибудь знает о существующем или встроенном способе сопоставления маршрутов с IHttpHandlers, это было бы здорово.