代码之家  ›  专栏  ›  技术社区  ›  Stuart

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

  •  2
  • Stuart  · 技术社区  · 15 年前

    我正在开发一个CMS,它可以在web服务器上运行,也可以不运行https。我希望能够检测是否启用了https,以便能够相应地执行操作(例如,向管理员显示一些与https相关的选项,并重定向到https以供管理员登录)。

    我不寻找Request.issecurenconnection,因为它只告诉我当前请求是否通过https。我想要一些东西来告诉我IIS中站点的当前绑定是否在当前请求打开的同一域中包含https的绑定。例如,即使当前的请求是 http://example.com/ 因此不安全,我想知道 https://example.com/ 如果用户以管理员身份登录,我可以(例如)将其重定向到它。

    不过,我在System.Web.Configuration中找不到任何能告诉我当前站点绑定的东西。

    我目前的解决方法是,如果启用了https,只需要管理员在web.config中设置一个appSetting,但我更希望能自动设置。必须设置相同的东西两次-一次在IIS中,一次在web.config中-令人困惑。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Samuel Neff    15 年前

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

        2
  •  1
  •   Pauli Østerø    15 年前

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

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