【问题标题】:Programmatically modify web.config for a self-hosted service (not via changes to applicationHost.config)以编程方式修改自托管服务的 web.config(而不是通过更改 applicationHost.config)
【发布时间】:2016-06-20 21:04:39
【问题描述】:

我被一些我可能应该继续前进的事情困住了,但这让我发疯了...... 我可以使用以下方式以编程方式更新自托管 WCF 服务的 SSL 证书信息:

Dim config As Microsoft.Web.Administration.Configuration = _
  serverManager.GetApplicationHostConfiguration
site.Bindings.Clear()
Dim binding = site.Bindings.Add(ipport, cert.GetCertHash, store.Name)
serverManager.CommitChanges()

并且还可以使用以以下开头的已知文件路径更改本地 web.config 的部分:

Dim cfg As System.Configuration.Configuration = _
  System.Web.Configuration.WebConfigurationManager.OpenMappedWebConfiguration(ConfigFileMap, target)

但如果我尝试使用以下方法深入了解 system.webServer/security/access:

Dim accessSection = cfg.GetSection("system.webServer/security")

我得到 Nothing/null 并且进一步挖掘有助于为“System.Configuration.IgnoreSection”部分生成此状态,这显然表明 System.Configuration 不想与该特定部分配合得很好 - 即使它没有被拒绝尽我所能访问 applicationHost。

另一方面,如果我尝试使用 Microsoft.Web.Administration,我只能弄清楚如何更改 applicationHost.config,而不是本地 web.config。

似乎想要将客户端证书要求(sslFlags 设置)放在本地 web.config 中的唯一东西是 IIS 管理器(如果它位于 applicationHost.config 中,它也不会正确显示设置)

显然有各种各样的方法可以做到这一点,但我不敢相信没有简单的点网方式(除了编辑 xml)。有谁知道我做错了什么?

【问题讨论】:

  • 您是否意识到,如果您在运行时修改 web.config,应用程序将重新启动?
  • 我想要它——它不是一个面向公众的网站。此外,如果 SSL 证书过期,它无论如何都不会工作:-)
  • 您可能会发现自己陷入了无限循环,但是 - 启动应用程序,修改配置文件,应用程序重新启动,修改配置文件,重复。除非你有逻辑阻止它进入这个条件。
  • 这是一个管理控制面板/Windows 窗体应用程序,可提供一站式 gui 用于调整诸如过期证书的 ssl 缩略图、更改客户端证书设置、电子邮件通知参数等自定义 Web 服务.它运行的唯一时间是需要手动重启时,没有任何标准警告适用。目的是避免单独手动编辑多个 web.config。

标签: vb.net wcf ssl iis


【解决方案1】:

哇!!!显然我需要学习阅读手册(虽然 MS 并不容易)。

你可以这样做:

Using serverManager As New ServerManager
    Dim config As Microsoft.Web.Administration.Configuration = _
      serverManager.GetWebConfiguration("site name", "/application")
    Dim accessSection As Microsoft.Web.Administration.ConfigurationSection = _
      config.GetSection("system.webServer/security/access")
    accessSection("sslFlags") = "Ssl,SslRequireCert"
    serverManager.CommitChanges()
End Using

追溯明显链接:Relevant StackOverflow Question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 2016-08-12
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多