生成URI时,UrlHelper不使用referrer主机

时间:2013-07-13 01:01:26

标签: c# asp.net-mvc rest asp.net-web-api

我正在开发一个MVC Web API应用程序,我需要从许多不同设备上的Web浏览器访问,例如智能手机。在开发过程中,我希望能够在从手机访问网站时进行调试。为此,我设置了Fiddler来提供反向代理。在本地,服务器在localhost:55950上运行,但是从我的手机我可以访问MyComputer:8888。这部分正在运作。

问题是我在REST响应中创建了URI。当我在MyComputer:8888访问该站点时,我需要的URI类似于MyComputer:8888 / services / api / files,但我得到localhost:55950 / services / api / files,这在我的手机上失败了。我正在使用UrlHelper类生成URI。我看了一遍,但还没有办法告诉系统使用引用者,而不是本地主机。我在Request中看到了所需的Referrer值,所以我想我可以编写代码来修补URI,但似乎这是一个常见的问题,必须有办法让UrlHelper正常工作。

如果有人能指出我正确的方向,我会非常感激。

1 个答案:

答案 0 :(得分:1)

查看this SO answer

var httpContext = HttpContext.Current;

if (httpContext == null) {
  var request = new HttpRequest("/", "http://example.com", "");
  var response = new HttpResponse(new StringWriter());
  httpContext = new HttpContext(request, response);
}

var httpContextBase = new HttpContextWrapper(httpContext);
var routeData = new RouteData();
var requestContext = new RequestContext(httpContextBase, routeData);

return new UrlHelper(requestContext);