【问题标题】:WCF -- Get matched route while using the Routing ModuleWCF -- 在使用路由模块时获取匹配的路由
【发布时间】: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;

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

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

【问题讨论】:

    标签: c# wcf routing


    【解决方案1】:

    简短的回答是……我放弃了。 WCF 有很多可扩展点,我只是在 WCF 生命周期的后期选择了一个点,在该点上对操作选择做出了决定。

    如果有人对此问题有答案,我很乐意将我的答案改为你的答案。谢谢!

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 2016-12-28
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多