我正在开发一个Web应用程序,它需要向用户发送电子邮件,指示他们浏览属于原始应用程序的某些页面。我当前的代码生成锚的href如下:使用代理提取请求URI
String.Format("{0}{1}{2}{3}/{4}",
Request.Url.Scheme, Uri.SchemeDelimiter, Request.Url.Host,
Request.ApplicationPath, path);
的目的是,它会工作,并链接到正确的网站,无论我是否在开发服务器,测试服务器或上运行的网站生产服务器。但是,我有一些缺点,我正在寻找一些解决方法。
Request.Url.Scheme
不适用于我们所有情况。我们的生产服务器需要https连接。代理获取https连接,解密请求并将其转发到我们的Web服务器上。因此,Request.Url.Scheme
将始终显示http
Request.Url.Host
正在返回我们的生产服务器的本地服务器名称;我认为这也与代理问题有关。- 已阅读另一篇建议使用
Request.Headers["host"]
的文章。不知道这是否会遭遇同样的问题。
是否有人对HTTP/HTTPS,转发和ASP.Net的处理这个haz德codez(或可以指向我在正确的方向)更多的知识?
基本上,如果用户使用http从dev.example.com的服务器接收到电子邮件,则电子邮件中的Uri应为http://dev.example.com/page.aspx
。如果用户通过https使用生产服务器secure.example.com(由Web代理处理),则链接应为https://secure.example.com/page.asx
。
感谢您的回答。我将把这个作为提案提交给我们的管理人员,看看会发生什么。你对开发和产品尽可能匹配的要求非常好,这是一个问题,我们一直在努力争取资源来实现目标。 – Anthony
各处都一样:)当我们转向更为结构化的发布方法时,我们最终确信管理层 - 他们的购买是出于合规性原因。当他们看到有多少次发布漏洞时,因为在周期后期发现了环境问题......突然之间变得很重要。 –