【发布时间】:2014-01-15 16:59:13
【问题描述】:
确定运行 ServiceStack 实例的基本 URL 路径的最佳方法是什么?例如,如果我将 ServiceStack 配置为在 web.config 中的“/api”基本 URL 处运行,我如何获取字符串“/api”?我想获取此值以构建任意请求 DTO 的 URL,作为 HATEOAS 样式文档。
例如,如果我有一个带有 [Route("/someRequest")] 属性的请求 DTO SomeRequest,则该请求的完整 URL 将是“/api/someRequest”。 ToUrl 扩展方法只返回基本 URL 下方路径的一部分:
new SomeRequest().ToUrl() // returns "/someRequest"
我还没有找到任何简单的方法来做到这一点。似乎 ServiceStack 没有公开返回“/api”基本路径值的配置属性。 Inspecting web.config 可以使用 ServiceStack 4 获取 ServiceStack 处理程序路径,但我无法弄清楚如何使用我们当前的 SS 3 配置来完成它。
Request.GetAbsolutePath() 方法将生成当前请求的完整路径,例如“/api/someRequest”,然后我可以在这个和ToUrl()扩展方法之间做一些字符串比较来确定基本路径,但这似乎也是一个非常脆弱的解决方案。
有没有更好的方法来获取这个基本 URL?
【问题讨论】:
-
@Scott 关于 servicestack-bsd 标签 - 我们将使用它而不是 servicestack-v3?
-
我确实尝试过discussing this on meta。如果某些东西与小于 3 的版本相关,有人反对 v3 特定标签——尽管我认为它们现在不存在。但是 BSD 似乎并不令人反感。我一直在使用它来解决明确适用于 v3 的新问题。
-
我觉得我更喜欢 servicestack-bsd。很高兴知道。
标签: c# servicestack hateoas servicestack-bsd