1

假设我目前有一个符合此合同的(实时)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 字符串)发布到服务,然后 Web 服务返回 JSON 响应。

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

我想做的是以下几点:

  1. 重命名MyWebService为指示它所针对的客户端版本的名称,例如MyWebService_1_0.
  2. 创建一个与IRequestReplyRouter相同的新路由服务,并将其命名 MyWebService为替代现有服务
  3. 在请求的 HTTP 标头中包含一个version标头,以便新的MyWebService 可以确定MyWebService_1_0要路由到的适当的实际服务(在本例中为 )。

从理论上讲,这似乎很简单。我遇到的问题是,每当我尝试创建上述服务时,Ajax 调用就会www.mywebsite.com/MyWebService.svc/VersionCheck/完全失败(请记住,在这种情况下,MyWebService它是一个路由服务,而不是我们开始使用的那个服务)。

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

4

0 回答 0