【问题标题】:Sending parameters as path segments doesn't work in ServiceStack将参数作为路径段发送在 ServiceStack 中不起作用
【发布时间】:2013-07-23 22:38:01
【问题描述】:

我正在尝试向我的 SS 服务发出 GET 请求,但是当我将它们作为 URL 段发送时,参数具有空值。根据https://github.com/ServiceStack/ServiceStack/wiki/Routing我可以通过两种方式调用服务:

/资源/p1/p2/p3 或者 /resource?p1=v1&p2=v2&p3=v3

第一种方法永远不会起作用(参数的默认值取决于它们的类型),而第二种方法总是有效的。我不想使用第一种方法调用服务。

这是我的代码

//Request DTO    
[Route("/test/{Param1}/{Param2}/{Param3}")]
public class Test
{
    public string Param1 { get; set; }
    public int Param2 { get; set; }
    public string Param3 { get; set; }
}

//Response DTO    
public class TestResponse : IHasResponseStatus
{
    public ResponseStatus ResponseStatus { get; set; }
    public string Inputs { get; set; }
}

我做错了什么?

【问题讨论】:

  • 您的问题已经在这里得到解答:(stackoverflow.com/questions/14128684/…)
  • 感谢您指出这一点,但据我所知,我的 DTO 与 mythz 推荐的相同。为什么它不起作用?
  • 似乎它确实可以正常工作。但是,在我的例子中,{Param1} 的值是一个 Url。例如,它不接受 http%3A%2F%2Fdev%2Fasdf.png。使用浏览器或 Postman 调用服务会引发 400 bad request 错误。奇怪的是,如果我删除编码的“http://”部分,相同的编码值就可以正常工作。有谁知道是什么导致了这种奇怪的行为?
  • 我还注意到,当发送带有编码斜杠 (%2F) 的字符串值作为 ServiceStack 请求中的路径段时,它将无法正确绑定或路由请求。
  • 我发现 this discussion 似乎证实了这是 ServiceStack 的一般限制,至少在 IIS 上运行时是如此。

标签: c# get servicestack


【解决方案1】:

只是为了结束这个问题:esker 发布了一个链接,其中 myz 确认我们遇到的实际上是一个 IIS/ASP.NET 错误。

【讨论】:

    猜你喜欢
    • 2016-08-30
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多