このようなコードを使用してカスタム ルートを Web フォームに追加する方法を見てきました。
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));
}
}
同様のことを機能させようとしていますが、Web サービス ファイル (TestService.asmx.) に対しては、ページが IHttpHandler から継承されないため、前のメソッドは例外をスローします。このような WebServiceHandlerFactory を使用する他のコードを見てきました
return new WebServiceHandlerFactory().GetHandler(context, requestType, url, pathTranslated);
それは必要な IHttpHandler を返しますが、HttpContext を渡す必要がありますが、RequestContext の一部としてアクセスできるのは HttpContextBase だけです。私が言えることから、そこから HttpContext に変換することはできません。
何か案は?それとも、別の方法でそれを行うのでしょうか?私が達成しようとしているのは、通常のルーティング システムを介して Web サービスの URL を制御することです。たとえば、TestService.asmx を ExampleTestService/ として表示する場合です。