現在、安らかなWCFプロジェクトを作成しています。現在のリクエストによって実行されているメソッドを取得する必要があります。要求ヘッダーまたはエンドポイント・ディスパッチャーからアクション名を取得します。しかし、私はこれらにアクセスすることはできません。設定されたエンドポイントがないためと推測されます。代わりにルーティングモジュールを使用してREST-full URLを実現しています。たとえば、次は私のGobal.asax.csに定義されています。WCF - ルーティングモジュールを使用しているときに一致するルートを取得
RouteTable.Routes.Add(new ServiceRoute("authentication", new MavizonWebServiceHostFactory(), typeof(AuthenticationService)));
RouteTable.Routes.Add(new ServiceRoute("offers", new MavizonWebServiceHostFactory(), typeof(OfferService)));
RouteTable.Routes.Add(new ServiceRoute("settings", new MavizonWebServiceHostFactory(), typeof(SettingsService)));
RouteTable.Routes.Add(new ServiceRoute("user/cars", new MavizonWebServiceHostFactory(), typeof(CarService)));
RouteTable.Routes.Add(new ServiceRoute("user/notifications", new MavizonWebServiceHostFactory(), typeof(NotificationService)));
RouteTable.Routes.Add(new ServiceRoute("user", new MavizonWebServiceHostFactory(), typeof(UserService)));
RouteTable.Routes.Add(new ServiceRoute("version", new MavizonWebServiceHostFactory(), typeof(MetaService)));
私は、この情報を取得するためにOperationContext
を使用しようとしていますので、承認マネージャからこの情報を取得しようとしています。
ご協力いただきありがとうございます。ありがとう! :-)
更新
私はServiceAuthorizationManagerで次の呼び出しを使用してみました:
System.ServiceModel.OperationContext.Current.IncomingMessageProperties["HttpOperationName"] as string;
しかし、何も返されませんでした。しかし、私がこのサービスメソッドで呼び出すと、私はサービスの名前を受け取りました。これは、メソッドが呼び出される時点で決定がなされていないことを意味します。
新しい質問は、どのようなサービスメソッドが呼び出されているかに依存してカスタムコードを挿入するためにどの拡張ポイントを使用すべきか、ライフサイクルで早くルートマッチングサービスを呼び出すことができるか?