WCF - 使用路由模块时获取匹配的路由

时间:2011-07-05 14:00:12

标签: c# wcf routing

我正在创建一个宁静的WCF项目,我需要获取当前请求正在执行的方法,并且我找到的所有示例都告诉我从请求标头或端点获取操作名称调度员。但是,我无法访问这些。我认为这是因为我没有任何配置的端点。我改为使用路由模块来实现REST-ful URL。例如,以下内容在我的Gobal.asax.cs中定义:

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;

但没有回复。但是,当我在我的服务方法中调用它时,我收到了服务的名称。这意味着此时尚未决定调用哪种方法。

所以,新的问题是:我应该使用什么扩展点来注入依赖于知道正在调用什么服务方法的自定义代码,还是可以在生命周期的早期调用路由匹配服务?

1 个答案:

答案 0 :(得分:0)

简短的回答是......我放弃了。 WCF有一堆扩展点,我刚刚在WCF生命周期中选择了一个点,其中已经对操作选择做出了决定。

如果有人对这个问题有答案,我很乐意改变你对你的回答。谢谢!