You need to enable JavaScript to run this app. ServiceStack JsonServiceClient:SendAsync忽略Route属性使用错误路径问题
优惠活动
大模型
产品
解决方案
定价
更多

ServiceStack JsonServiceClient:SendAsync忽略Route属性使用错误路径问题

ServiceStack客户端调用路由匹配异常

开发环境

  • 项目类型:Xamarin移动端应用
  • 开发工具:Visual Studio 2019 16.9
  • 依赖包:ServiceStack.Client v5.10.4

遇到的问题

在项目中通过JsonServiceClient发起服务请求时,后端直接返回对应端点不存在的错误,抓包核对后发现实际请求路径和预期完全不符。

  • 触发异常的调用代码:
JsonServiceClient client = new JsonServiceClient("https://my.domain.com/");
SetHeaders(client);

var request = ...; // 实现IRequest<T>接口的请求对象
// 这行调用直接失败,提示找不到对应服务
var result = await client.SendAsync(request);
  • 抓包获取的实际请求地址:https://my.domain.com/json/reply/Login,走了ServiceStack的默认JSON回复路由,完全没有读取DTO上定义的自定义路由规则。

请求DTO定义

请求DTO放在独立的类库项目中,已经标注了自定义路由特性:

[Route("/mybasepath/endpoint", "POST")]
public class Login : IReturn<LoginResponse>
{
}

验证正常的调用方式

把SendAsync替换为明确指定POST谓词的PostAsync方法后,请求路径会正确匹配DTO上标注的路由地址,接口可以按预期正常响应:

JsonServiceClient client = new JsonServiceClient("https://my.domain.com/");
SetHeaders(client);

var request = ...; // 实现IRequest<T>接口的请求对象
// 这行调用可以正常跑通
var result = await client.PostAsync(request);

待确认的疑问

目前还没搭建可以稳定复现问题的最小测试工程,想确认这个异常是不是自己漏了某步简单的基础配置导致的。


内容的提问来源于stack exchange,提问作者Ted

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 17:54:04