【问题标题】:POST Method fails to populate request object in ServiceStackPOST 方法无法在 ServiceStack 中填充请求对象
【发布时间】:2015-04-22 01:08:30
【问题描述】:

我使用服务堆栈已经有一段时间了,遇到了一个场景,其中 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            
}

然后我使用客户端调用这些方法

SearchServiceClient searchClient = new SearchServiceClient(SearchServiceAPIUrl);

SearchResponse searchResponse = searchClient.Search(SearchProvider.SampleSearchProvider, searchterm, categoryID, 100,"conservative");

非常感谢任何帮助

谢谢

【问题讨论】:

    标签: asp.net servicestack


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在修改 DTO 后,我终于找到了解决方案。对于发布请求,似乎所有 DTO 属性都需要具有用于序列化/反序列化的 [DataMember] 属性,并确保该类也具有 [DataContract] 属性。

      【讨论】:

      • 这听起来不对,SearchServiceClient 使用的是什么序列化程序?它是否继承了现有的 ServiceStack ServiceClient?如果是 JSON,[DataContract][DataMember] attrs 会选择序列化,其中every property needs to be decorated or none do
      猜你喜欢
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 2022-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      相关资源
      最近更新 更多