servicestack,Asp.net,servicestack" /> servicestack,Asp.net,servicestack" />

Asp.net POST方法无法在ServiceStack中填充请求对象

Asp.net POST方法无法在ServiceStack中填充请求对象,asp.net,servicestack,Asp.net,servicestack,我使用服务堆栈已经有一段时间了,遇到了一个场景,POST方法使用IReturn对象的默认实例(所有属性都默认为其数据类型值)。作为路由的一部分提供的值(/product/1234345/)是唯一填充的值。我在下面列出了一个例子: [Route("/search/{searchMethod}/books")] public class SearchRequest : IReturn<SearchResponse> { public SearchProvider searchPr

我使用服务堆栈已经有一段时间了,遇到了一个场景,POST方法使用IReturn对象的默认实例(所有属性都默认为其数据类型值)。作为路由的一部分提供的值(/product/1234345/)是唯一填充的值。我在下面列出了一个例子:

[Route("/search/{searchMethod}/books")]
public class SearchRequest : IReturn<SearchResponse>
{
    public SearchProvider searchProvider { get; set; }

    public string searchTerm { get; set; }

    public string categoryID { get; set; }

    public long maxResults { get; set; }

    //Only this property gets populated if method is post
    public string searchMethod { get; set; }
}

public SearchResponse Any(SearchRequest searchRequest)
{
    //This works only for non-post requests
    return Put(searchRequest);
}

public SearchResponse Get(SearchRequest searchRequest)
{
    //This works
    return Put(searchRequest);
}

public SearchResponse Post(SearchRequest searchRequest)
{
    //This does not
    return Put(searchRequest);
}

public SearchResponse Put(SearchRequest searchRequest)
{
    //Code for put method goes here            
}
非常感谢您的帮助


谢谢

我总是在构造函数中填充我的请求对象并将其发送到服务

    searchClient.Post(new SearchRequest(SearchProvider.SampleSearchProvider, 
                                       searchterm, categoryID, 100,"conservative")):

在修补DTO之后,我终于找到了解决方案。对于post请求,似乎所有DTO属性都需要有一个[DataMember]属性来进行序列化/反序列化,并确保类也有一个[DataContract]属性。

听起来不对,SearchServiceClient使用的序列化程序是什么?它是否继承现有ServiceStack ServiceClient?如果是JSON,则
[DataContract]
[DataMember]
attrs使序列化选择在何处。
    searchClient.Post(new SearchRequest(SearchProvider.SampleSearchProvider, 
                                       searchterm, categoryID, 100,"conservative")):