如何从ASP.NET的GetUrlHelper()返回相对URL?

时间:2013-06-06 21:58:46

标签: asp.net-mvc-4 restful-url asp.net-web-api-routing

在ASP.NET MVC 4网站中,我使用Web API返回JSON格式的资源,包括授权操作的链接(例如,DELETE)。要创建这些链接,我在HttpRequestMessage上使用GetUrlHelper()扩展方法......

_httpRequest.GetUrlHelper().Link( routeName, routeValues );

我担心的是,Link()返回的字符串是一个完全限定的URL(它包括https://example.com/...),而我认为我需要的只是相对URL(只是/my/resource)。目前,我有一个服务器问题,我们的生产环境在应该是https时添加http,这不起作用。我可以单独修复它,但它提出了一个问题,我应该提供相对URL吗?如果是这样,是否有更好的方法来获取相对URL而不是修剪UrlHelper.Link()生成的URL的根部分?

编辑: 在咨询了Richardson的& Ruby的功勋RESTful Web Services,我更坚信相对URL在这里是完全合适的。

1 个答案:

答案 0 :(得分:0)

Uri上的PathAndQuery会帮助你吗?

示例:(new Uri(_httpRequest.GetUrlHelper().Link("DefaultApi", new { controller = "Values", p1="abc" }))).PathAndQuery ...这会给你/my/resource?p1=abc