1

在 ServiceStack 的 OnDelete 上,它被调用但值为空。

我试图检查值,例如

ProductRequestResponse rx = Client.Send<ProductRequestResponse>(
            "DELETE", "http://localhost:2012/api/product_request", 
            new ProductRequest { Id = 7 });    

在 ServiceStack 方面,我只收到 0 的 Id。这是我的 StackService OnDelete 方法。

public override object OnDelete(ProductRequest request)
{
    throw new Exception("Id: " + request.Id.ToString());
}

这是我用于通信的对象

public class ProductRequest
{
    public int Id { get; set; }
    public ProductDto ProductDto { get; set; }
}

public class ProductRequestResponse
{
    public ProductDto ProductDto { get; set; }        

    public IEnumerable<ProductDto> ProductDtos { get; set; }

    public ServiceStack.ServiceInterface.ServiceModel.ResponseStatus ResponseStatus { get; set; } //Where Exceptions get auto-serialized
}

我错过了什么,为什么 StackService 没有从 OnDelete 方法接收任何值?

4

1 回答 1

1

首先,您应该使用Delete方法作为SendPOST 的唯一方法:

所以它看起来像:

restClient.Delete<TransactionLogResponse>("/transactionlog");

Delete 不期望 Request DTO 的原因是因为 DELETE Http 动词不接受请求正文。

如果要添加参数,则应将其添加到路由路径或查询字符串中,例如:

restClient.Delete<TransactionLogResponse>("/transactionlog/1?Arg1=a&Arg2=b");
于 2012-06-21T08:11:59.893 回答