Я видел, как вы можете добавлять собственные маршруты в WebForms, используя такой код, как этот.
public class WebFormsRouteHandler : IRouteHandler
{
public string VirtualPath { get; set; }
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
// Compiles ASPX (if needed) and instantiates the web form
return (IHttpHandler) BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof (IHttpHandler));
}
}
Я пытаюсь заставить подобную вещь работать, но для файлов веб-службы (TestService.asmx.) Этот предыдущий метод вызывает исключение, потому что страница не наследуется от IHttpHandler. Я видел другой код, который использует WebServiceHandlerFactory, например,
return new WebServiceHandlerFactory().GetHandler(context, requestType, url, pathTranslated);
Это возвращает IHttpHandler, как мне нужно, но ему нужен переданный HttpContext, но единственная вещь, к которой у меня тоже есть доступ как часть RequestContext, - это HttpContextBase. Из того, что я могу сказать, я не могу конвертировать в HttpContext из этого.
Есть идеи? Или, может быть, по-другому? Я пытаюсь контролировать URL-адреса моих веб-сервисов через обычную систему маршрутизации. Примером является то, что TestService.asmx должен называться ExampleTestService /.