如何允许WCF路由器充当Web服务的替代品?

时间:2012-06-20 19:59:42

标签: c# wcf web-services rest wcf-routing

假设我目前拥有符合此合同的(实时)WCF Web服务

namespace MyWeb
{
    [ServiceContract]
    public interface IMyWebService
    {
        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "VersionCheck/")]
        bool VersionCheck(string version, string device);
    }
}

目前按预期工作; Web客户端使用AJAX将参数(作为JSON字符串)POST到服务,然后Web服务返回JSON响应。

但是,我需要打破即将推出的客户端版本的API兼容性,我不能保证所有用户都会立即使用客户端的更新版本。

我想做的是以下内容:

  1. MyWebService重命名为指示版本的内容 它的目的客户,例如MyWebService_1_0
  2. 以与IRequestReplyRouter相同的方式创建新的路由服务,并为其命名 MyWebService可作为现有服务的替代品
  3. 在请求的HTTP标头中包含version标头,以便新MyWebService 可以确定要路由的适当的实际服务(在这种情况下,MyWebService_1_0) 到。
  4. 从理论上讲,这似乎很简单。我遇到的问题是,每当我尝试创建上述服务时,对www.mywebsite.com/MyWebService.svc/VersionCheck/的Ajax调用都会完全失败(请记住,在这种情况下,MyWebService是一个路由服务,不一样我们开始的服务)。

    我想我的问题是,在这种情况下,我该怎样做才能让路由器作为替代品工作?或者,有没有更好的方法来处理这个?目前无法进行客户端更新。

0 个答案:

没有答案