繁体   English   中英

从ServiceStack 3.9升级到4.x后,SyncReply URL不同

[英]SyncReply URL different after upgrading from ServiceStack 3.9 to 4.x

我有一些旧的ServiceStack客户端正在使用此调用:

        public ProductUpdateResponse GetProductUpdate(string productId, string currentVersion, string licenseId, string machineCode)
    {
        var client = new JsonServiceClient(baseAPI);
        var resp = client.Send<ProductUpdateResponse>(new ProductUpdate() { ProductId = productId, ProductVersion = currentVersion, LicenseId = licenseId, MachineCode = machineCode });

        return resp;
    }

如果我将其指向一个serviceStack 3.9服务器,它将正常工作。 如果您运行它指向4.x服务器,则会收到“未找到”错误。

我将其追溯到SyncReply路径有所不同。

客户端POST到

/api/json/syncreply/productupdate

但是在4.x服务器上,相同的同步回复路径不同

/api/json/reply/productupdate (works)
/api/json/syncreply/productupdate (Not Found Error)

客户端和服务器上的DTO完全相同。

我需要在4.x ServiceStack中进行一些配置设置以保持向后兼容吗?

通过将旧版同步回复路由添加到服务器上的请求DTO,我可以解决此问题。

[Route(“ / json / syncreply / productupdate,Verbs =” POST“)]

//Request DTO
[Route("/products/{ProductId}/updates/{ProductVersion}")]
[Route("/products/{ProductId}/updates")]
[Route("/json/syncreply/productupdate", Verbs="POST")]
public class ProductUpdate
{
    public string ProductId { get; set; }
    public string ProductVersion { get; set; }
    public string MachineCode { get; set; }
    public string LicenseId { get; set; }
}

似乎像PredefinedRoutesFeature(定义默认处理程序路径的位置)应该具有维护旧版后备路由的选项。

旧的预定义路由在v4重构中被重命名 ,“路由”文档显示了v4的预定义路由的格式。

ServiceStack v4不接受v3路由,但是最新版本的v3接受v3和仅v4路由,并允许将Service Client配置为通过以下方式使用重命名的路由:

client.UseNewPredefinedRoutes = true;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM