2

我正在开发一个可以在网络服务器上启用或不启用 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 中——令人困惑。

4

2 回答 2

1

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

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

于 2010-11-16T16:53:05.750 回答
1

最简单的方法是从站点向站点发出 https 请求,如果成功,那么您就知道支持 https。将此缓存在静态变量中,以便每次应用调用仅调用一次。

于 2010-11-16T16:22:44.863 回答