我想知道什么是分发web.config的最佳方式,因为它是安装在任何机器上的Web服务的一部分。在我的情况下,web.config包含Web服务正常运行所需的http处理程序,但是一旦安装,用户就可以在IIS中为Web服务更改选项,这将更改web.config(例如,授权,连接字符串,等等。)。问题是如果我将web.config作为安装/升级的一部分,如果将覆盖所有用户定义的设置,但如果我不这样做,则可能缺少新的https处理程序或其他关键的新web.config设置。关于web.config发布的最佳实践是什么?
答案 0 :(得分:2)
这是一个非常有趣的问题,我不确定我是否曾经遇到过这方面的最佳实践指南。它与用户将已安装的DLL更改为自定义DLL然后升级应用程序非常相似。只要MSI数据库有该DLL的记录,自定义DLL就会被替换。
我的建议是进行安装后操作(大多数安装程序,例如WIX允许您在C#中执行这些操作),这将执行以下操作:
您需要担心的几个问题:
还有其他几个问题会推动您的设计,说实话我认为这个论坛不会让您接近满足您所有需求的解决方案。
我很想知道你最终会得到什么。
答案 1 :(得分:2)
这取决于您在web.config中需要使用的服务。
您可以使用web.config中某些部分的ConfigSource属性将该部分中的所有设置移至外部辅助文件。
例如:
<system.webServer><handlers ConfigSource="httphandlers.config" />
然后,您可以自己更新httphandlers.config,而不必担心客户对其进行任何修改。
如果您的客户需要添加自己的http处理程序,则会出现问题,然后您遇到与以前相同的问题。
您不应该在ConfigSource
上加<appSettings>
,而是定义自己的configSection
,然后将该部分放入辅助文件中。与您的服务相关的所有设置都应该在那里。
因此,只要您不与客户共享某个部分,这应该有效。
这只是一个概念,我自己也没有在生产中使用它。