我正在尝试使用 servicestack 进行简单的 api post 调用,并且它不断抛出“未找到”异常。当使用 web 浏览器 rest api(例如邮递员)直接对 api 进行相同的 post 调用时,api 调用有效。
我用路由属性装饰了我的请求对象
[Route("/register", "POST")]
public class Register : IReturn<RegistrationResponse>
{
    public DateTime? BirthDate { get; set; }
    public string Continue { get; set; }
    public string Email { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender { get; set; }
    public string Password { get; set; }
}
JsonServiceClient 使用基本 uri 初始化,但以下调用失败
_client = new JsonServiceClient(_apiUri);
_client.HttpMethod = HttpMethods.Post;
var response = _client.Send(body);
我发现的例外是:
$exception {"Not Found"} System.Exception {ServiceStack.ServiceClient.Web.ServiceClientBase.ThrowWebServiceException[TResponse](Exception ex, String requestUri) at ServiceStack.ServiceClient.Web.ServiceClientBase.ThrowResponseTypeException {ServiceStack.ServiceClient.Web.WebServiceException} ServiceStack.ServiceClient.Web.ServiceClientBase.HandleResponseException [TResponse](对象请求,异常前,字符串 requestUri)[TResponse](异常前,对象请求,字符串 requestUri,Func
1 createWebRequest, Func2 getResponse,TResponse& 响应)在 ServiceStack.ServiceClient.Web。 ServiceClientBase.Send[TResponse](Object request) at ApiService`2.Post(String path, TParams body) in ApiService.cs:line 81
servicestack 上关于新 API 的文档提到了装饰请求 DTO 的 Route 属性的使用以及 IReturn 的使用,但是通过查看 Send 方法背后的代码,它正在从请求的名称中计算出其余的 api url ,这意味着您的请求 dto 不能命名为任何不同的名称。
public virtual TResponse Send<TResponse>(object request)
{
    var requestUri = this.SyncReplyBaseUri.WithTrailingSlash() + request.GetType().Name;
    var client = SendRequest(requestUri, request);
    try
    {
        var webResponse = client.GetResponse();
        return HandleResponse<TResponse>(webResponse);
    }
    catch (Exception ex)
    {
        TResponse response;
        if (!HandleResponseException(ex,
            request,
            requestUri,
            () => SendRequest(HttpMethods.Post, requestUri, request),
            c => c.GetResponse(),
            out response))
        {
            throw;
        }
        return response;
    }
}
是什么导致 Not Found 异常?