[英]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.