Hao
Hao

Reputation: 8115

ServiceStack not receiving values on OnDelete

On OnDelete of ServiceStack, it is called but the values are empty.

I tried to check the value, e.g.

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

On the ServiceStack side, I only receive an Id of 0. Here's my StackService OnDelete method.

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

Here's my objects use for communication

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
}

What am I missing, why StackService is not receiving any value from OnDelete method?

Upvotes: 1

Views: 280

Answers (1)

mythz
mythz

Reputation: 143319

Firstly, you should be using the Delete method as the Send only does POST's:

So it looks something like:

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

The reason why Delete doesn't expect a Request DTO is because the DELETE Http verb does not accept a request body.

If you want to add paramaters you should add this on the route path or query string, e.g:

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

Upvotes: 1

Related Questions