我可以从站点代码中检测是否为ASP.NET网站启用了SSL / https吗?

时间:2010-11-16 15:32:51

标签: asp.net iis ssl https system.web

我正在使用可以在网络服务器上启用或不启用https的情况下运行的CMS。我希望能够检测是否启用了https,以便我可以采取相应措施(例如,向管理员显示一些与https相关的选项,并重定向到https以进行管理员登录)。

我不是在寻找Request.IsSecureConnection,因为它只告诉我当前请求是否通过https。我想要的东西会告诉我,IIS中网站的当前绑定是否包含与当前请求所在的同一域中的https绑定。因此,例如,即使当前请求是针对http://example.com/并因此不安全,我想知道https://example.com/是否可行,因此我可以(例如)在用户登录时将用户重定向到它作为管理员。

我没有在System.Web.Configuration中寻找任何可以告诉我当前网站绑定的任何内容。

我目前的解决方法是要求管理员在启用https的情况下在web.config中设置appSetting,但我更愿意,如果我可以自动设置它。必须设置两次相同的东西 - 一次在IIS中,一次在web.config中 - 令人困惑。

2 个答案:

答案 0 :(得分:1)

最简单的方法是从站点向站点发出https请求,如果成功,则表示支持https。将其缓存在静态变量中,因此每次调用时只调用一次。

答案 1 :(得分:1)

根据您的IIS版本,您可以使用管理的.net代码在IIS7中执行管理任务。这是查询站点绑定以查看是否已启用https的示例

http://msdn.microsoft.com/en-us/library/microsoft.web.administration.bindingcollection(v=VS.90).aspx