我正在使用自托管ServiceStack提供与票务系统集成的API,并定义了以下路由:
Routes
.Add<TicketsWithStatus>("tickets/{Status}")
.Add<TicketStatusCounts>("tickets");
当状态包含空格时,我遇到第一个路由的URL编码问题。如果我浏览http://myservicebase/json/syncreply/TicketsWithStatus?Status=On%20Hold
,我会收到我期待的回复。但是,如果我使用RESTful路由http://mysevicebase/tickets/On%20Hold
,我就不会得到任何结果。
调试我的应用程序,我可以看到On%20Hold
在On Hold
调用的情况下被解码为json/syncreply
,但在使用RESTful路由时未被解码。 / p>
如何通过RESTful路由调用我的服务时,确保正确解码status属性?
答案 0 :(得分:1)
ServiceStack没有UrlDecode PathInfo,它使用ASP.NET Request对象返回的相同HttpRequest.PathInfo
。如果将其更改为开启+保持,则可能会取得更好的成功。