2011-07-05 6 views
1

現在、安らかな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; 

しかし、何も返されませんでした。しかし、私がこのサービスメソッドで呼び出すと、私はサービスの名前を受け取りました。これは、メソッドが呼び出される時点で決定がなされていないことを意味します。

新しい質問は、どのようなサービスメソッドが呼び出されているかに依存してカスタムコードを挿入するためにどの拡張ポイントを使用すべきか、ライフサイクルで早くルートマッチングサービスを呼び出すことができるか?

答えて

0

短い答えは....私はあきらめました。 WCFには一連の拡張ポイントがあり、WCFライフサイクルの後半で、操作の選択が決定された時点でポイントを選択しました。

誰かがこの問題に対する回答を持っている場合は、あなたの回答を喜んで変更します。ありがとう!

関連する問題