ServiceStack没有在OnDelete上接收值

时间:2012-06-13 23:09:13

标签: servicestack

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

我试图检查这个值,例如

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

在ServiceStack方面,我只收到一个Id为0.这是我的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方法接收任何值?

1 个答案:

答案 0 :(得分:1)

首先,您应该使用Delete方法,因为Send仅执行POST:

所以它看起来像:

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

Delete之所以不期望Request DTO是因为DELETE Http动词不接受请求体。

如果要添加参数,则应在路径路径或查询字符串中添加它,例如:

restClient.Delete<TransactionLogResponse>("/transactionlog/1?Arg1=a&Arg2=b");