【发布时间】:2011-09-28 20:37:32
【问题描述】:
我目前正在创建一个安静的 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;
但是没有返回任何东西。但是,当我在我的服务方法中调用它时,我收到了服务的名称。这意味着此时尚未决定调用哪个方法。
所以,新的问题是:我应该使用哪个扩展点来注入我的自定义代码,这取决于知道正在调用什么服务方法,或者我可以在生命周期的早期调用路由匹配服务吗?
【问题讨论】: