【问题标题】:Proper way to distribute web.config as a third party web service provider作为第三方 Web 服务提供商分发 web.config 的正确方法
【发布时间】:2015-05-25 11:53:50
【问题描述】:

我想知道当 web.config 是 Web 服务的一部分时,分发 web.config 的最佳方式是由安装程序在任何机器上安装的。在我的情况下,web.config 包含 web 服务正常运行所需的 http 处理程序,但是一旦安装,用户可以从 IIS 中更改 web 服务的选项,这将更改 web.config(例如授权、连接字符串、等等。)。问题是,如果我将 web.config 作为安装/升级的一部分,是否会覆盖所有用户定义的设置,但如果我不这样做,它可能会丢失新的 https 处理程序或其他关键的新 web.config 设置。关于 web.config 分发的最佳做法是什么?

【问题讨论】:

    标签: c# asp.net .net web-services iis


    【解决方案1】:

    这在一定程度上取决于您的服务需要在 web.config 中使用什么。

    您可以使用 web.config 中某些部分的ConfigSource 属性将该部分中的所有设置移动到外部辅助文件。

    例如:

    <system.webServer><handlers ConfigSource="httphandlers.config" />
    

    然后您可以自己更新 httphandlers.config,而不必担心客户对其进行任何修改。

    如果您的客户需要添加自己的 http 处理程序,就会出现问题,那么您将遇到与以前相同的问题。

    您不应该在&lt;appSettings&gt; 上添加ConfigSource,而是定义您自己的configSection,然后将该部分也放入辅助文件中。与您的服务相关的所有设置都应该在那里。

    因此,只要您不与客户共享部分,这应该可以。

    这只是概念,我自己不会在生产中使用它。

    【讨论】:

    • 我从未意识到您可以在另一个 .config 文件中拆分 http 处理程序,这可能会解决我们的问题,因为这是我们过去遇到的问题(它们没有更新,因为我们没有更新新的 web.config,因为我们害怕覆盖用户设置)。非常感谢。
    【解决方案2】:

    这是一个非常有趣的问题,我不确定我是否遇到过最佳实践指南。这非常类似于用户将已安装的 DLL 更改为自定义的,然后升级应用程序。只要 MSI 数据库有该 DLL 的记录,自定义 DLL 就会被替换。

    我的建议是进行安装后操作(大多数安装程序,例如 WIX 允许您在 C# 中执行这些操作),这将执行以下操作:

    1. 全新安装,发布操作将 Web.Install.Config 复制到 Web.config
    2. 用户可以根据自己的喜好修改 web.config
    3. 升级、发布操作足够聪明,知道存在 web.config 并合并设置

    你需要担心的几个问题:

    1. 显然,合并设置总是很有趣(不是 :))
    2. 如果您实际上已将配置文件中的现有设置更改为更好的值(例如超时),您的更改会赢还是客户会改变?
    3. 如果他们真的完全删除了一个设置怎么办?你会读吗?

    还有其他几个问题会推动您的设计,老实说,我认为这个论坛不会让您接近满足您所有需求的解决方案。

    不过,我很想看看你最终会得到什么。

    【讨论】:

    • 我们可能会选择 Peter 提到的 http 处理程序是我们的主要问题,我从未意识到某些部分可以在单独的 .config 中分解。这个新配置将始终更新,与 web.config 不同,我们可能只会在第一次安装时安装它。
    • 非常正确,尽管也没有什么能阻止用户修改这些文件,仅供参考:)
    • 是的,我确实意识到这是可能的,但不是很多,并且它减少了很多冲突,因为没有用户设置将存储在专门用于 http 处理程序的配置文件中,它不会让他们为我们的自包含网络应用程序(这只是移动应用程序的中间层)添加或删除 http 处理程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2014-09-25
    • 2014-09-08
    相关资源
    最近更新 更多