3

这是场景。我们有一个路由器,可以端口转发我们不同测试站点的请求。例如http://www.ourSite.com:8051从路由器转发到端口 80 上的 Web 服务器。测试网站是在 IIS6 (Windows Server 2003) 上运行的一个网站的虚拟目录。

我们的应用程序的一部分会发送电子邮件,这些电子邮件使用基本 url 在应用程序中构建一些链接。这是在我们的应用程序启动中构建的基本 url:

siteBaseUrl = string.Format("{0}://{1}{2}",
                HttpContext.Current.Request.Url.Scheme,
                HttpContext.Current.Request.Url.Authority,
                HttpContext.Current.Request.ApplicationPath.TrimEnd('/'));

因此,假设我们的一个测试站点看起来像这样,http://www.ourSite.com:8051/client1。我希望 siteBaseUrl 看起来像这样http://www.ourSite.com:8051/client1,而实际上它最终看起来像这样http://www.ourSite.com/client1(我试着找到一个像这样的问题这在 StackOverflow 上但没有找到。也许我没有使用正确的关键字进行搜索,或者我需要更多的咖啡。对于此事的任何帮助将不胜感激。

4

2 回答 2

5

HttpContext.Current.Request.Url 基于从 IIS 请求的资源,它不代表 Client 请求 Url。但是,您可以使用 HTTP 标头中的 Host 属性。

siteBaseUrl = string.Format("{0}://{1}{2}",
                HttpContext.Current.Request.Url.Scheme,
                HttpContext.Current.Request.Headers["host"],
                HttpContext.Current.Request.ApplicationPath.TrimEnd('/'));
于 2009-07-21T20:45:51.457 回答
0

如果端口号被您的路由器剥离,您总是可以使用 javascript 来获取 url 并将其发送到服务器。

于 2009-07-21T20:32:00.033 回答