4

我正在尝试将一组查询字符串中的值链接到服务堆栈对象中的属性。

以下代码片段说明了我想要实现的目标。(我想将 FN 映射到 SenderNumber,将 TN 映射到 ContactNumber 等)

[Route("/smscallback?FN={SenderNumber}&TN={ContactNumber}&MS={Response}&TS={TS}")]
public class SmsCallback : IReturn<SmsCallbackResponse>
{
    public string SenderNumber
    {
        get;
        set;
    }
    public string ContactNumber
    {
        get;
        set;
    }
    public string Response
    {
        get;
        set;
    }
    public string TS
    {
        get;
        set;
    }
}

有谁知道如何做到这一点?我查看了 servicestack 提供的路由示例,但我无法将其应用于我的情况。

谢谢你。

4

1 回答 1

6

请重新阅读路由维基页面

注意:QueryString、FormData 和 HTTP 请求正文不是 Route 的一部分(即只有 /path/info 是),但除了每个 Web 服务调用之外,它们都可以用于进一步填充 Request DTO。

您不能在路由中放置任何 queryString 。如果要更改映射到的字段,则需要使用 DataContract/DataMember 属性装饰 DTO,例如:

[DataContract]
public class SmsCallback : IReturn<SmsCallbackResponse>
{
    [DataMember(Name="fn")]
    public string SenderNumber { get; set; }

    [DataMember(Name="tn")]
    public string ContactNumber { get; set; }

    [DataMember(Name="ms")]
    public string Response { get; set; }

    [DataMember]
    public string TS { get; set; }
}
于 2013-04-02T15:16:48.127 回答