我正在使用可以在网络服务器上启用或不启用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中 - 令人困惑。
答案 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