5

我正在开发一个 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 正常工作。

如果有人能指出我正确的方向,我将不胜感激。

4

1 回答 1

1

看看这个 SO 答案

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);
于 2014-03-27T19:13:36.050 回答