【发布时间】: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。