私はasp.netRouteTable
を使用してWebServiceのカスタムルートを登録していますが、asp.net WebServicesはIHttpHandler
インターフェイスから継承されないため、呼び出しを基になるHttpHandler
.
現在、唯一の公式/文書化された方法はWebServiceHandlerFactory
、サービスの適切なハンドラーを取得するために使用することです。
IHttpHandler handler = new WebServiceHandlerFactory().GetHandler(HttpContext.Current, "*", "url", "path");
ただし、これにはサービスの仮想パスが必要ですが、これは私が探しているものではありません! 私が見つけた他の回避策は、実際にWebServiceHandlerFactory
リフレクションを使用して内部CoreGetHandler
メソッドを呼び出すことでした。
var wshf = new WebServiceHandlerFactory();
var coreGetHandler = wshf.GetType().GetMethod("CoreGetHandler", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
var httpHandler = (IHttpHandler)coreGetHandler.Invoke(wshf, new object[] { typeof(MyWebService), context, context.Request, context.Response });
しかし、これは公式/文書化された方法ではなく、将来のリリースで変更される可能性があるため、私の質問は、仮想パスではなくそのタイプのみに基づいて asp.net WebServiceの権利を取得する方法があるかどうかです。HttpHandler