如何解决ServiceStack JsonServiceClient:SendAsync 使用错误的路径,忽略路由属性?
我在 Xamarin 应用程序中使用 JsonServiceClient,如下所示:
JsonServiceClient client = new JsonServiceClient("https://my.domain.com/");
SetHeaders(client);
var request = ...; // this is IRequest<T>
var result = await client.SendAsync(request); // <-- FAILS,can't find service
我的后端返回一个答案,说该端点没有服务,这是真的,实际通过线路发送的路径不正确。
request
在 lib 中定义,如下所示:
[Route("/mybasepath/endpoint","POST")]
public class Login : IReturn<LoginResponse>
{
}
问题是调用中使用的路径不对,没有遵循Route属性:
https://my.domain.com/json/reply/Login
此处,ServiceStack 客户端使用默认的 /json/reply
路径,即使我在 DTO 中定义了 Route
属性。
如果我更改在 client
实例上使用的方法,而是使用 PostAsync
,则路径为 10,并且调用按预期工作:
JsonServiceClient client = new JsonServiceClient("https://my.domain.com/");
SetHeaders(client);
var request = ...; // this is IRequest<T>
var result = await client.PostAsync(request); // <-- WORKS!
我现在没有可以立即测试的最小项目,也许我错过了一些简单的项目?
(在 VS 2019 16.9 上使用 ServiceStack.Client v 5.10.4)
解决方法
如果您想使用 ServiceStack 的通用 Send*
API,服务客户端需要通过使用 HTTP Verb Interface Marker 注释请求 DTO 来明确推断要使用的动词,AutoQuery 或 { 不需要{3}} 从其基类推断的 API。
否则 Send*
API 旨在回退以使用 ServiceStack 的 AutoQuery CRUD。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。