C# 升级时的web.config最佳做法
我发送一个应用程序,让客户更改web.config中的连接字符串等 当我升级我的应用程序时,这会引起麻烦,因为我不想用我的覆盖它们的值 当升级.net版本时,这种情况尤其糟糕 人们通常如何处理这种情况C# 升级时的web.config最佳做法,c#,.net,web-config,C#,.net,Web Config,我发送一个应用程序,让客户更改web.config中的连接字符串等 当我升级我的应用程序时,这会引起麻烦,因为我不想用我的覆盖它们的值 当升级.net版本时,这种情况尤其糟糕 人们通常如何处理这种情况 例如,他们是否以某种方式将web.config拆分,从而使客户数据不再是web.config的一部分?我从未听说有人将web.config设置为可供客户或任何其他业务人员访问和写入。你只是自找麻烦 听起来您可能想开发一个小型前端(web)实用程序,允许他们以表单形式提交值并保存到数据库。然后让应用
例如,他们是否以某种方式将web.config拆分,从而使客户数据不再是web.config的一部分?我从未听说有人将web.config设置为可供客户或任何其他业务人员访问和写入。你只是自找麻烦 听起来您可能想开发一个小型前端(web)实用程序,允许他们以表单形式提交值并保存到数据库。然后让应用程序访问数据库以获取这些值,而不是web.config
这似乎更像是一个内容管理问题。我从未听说过有人让客户或任何其他商务人士可以访问和写入web.config。你只是自找麻烦 听起来您可能想开发一个小型前端(web)实用程序,允许他们以表单形式提交值并保存到数据库。然后让应用程序访问数据库以获取这些值,而不是web.config
这似乎更像是一个内容管理问题。有几种方法可以解决这个问题。我会提到两个。一个是关于你的交付过程。另一个实际上涉及web.config 1) 不要将web.config作为“代码”发送。考虑它的“配置”。这并不适用于所有场景(事实上,基于客户的场景是我所想到的糟糕场景)。如果您要交付给“生产”,您可以同意让他们负责web.config的内容(一个好的做法是尽可能多地尝试重构machine.config)。这样,像连接字符串这样的事情就变成了生产问题,而不是开发问题 2) 使用configSource属性。ASP.NET 2.0支持使用configSource属性外部化属性。很难将所有web.config转换为“生产问题”(在交付给客户的场景中,他们可能不是这方面的专家) 所以你把它具体化成这样。以下是您当前的appSettings部分,例如:
<appSettings>
<add key="EnableFrobbing" value="false" />
<add key="ExpectFooingFrom" value="fooingserver@domain.com " />
</appSettings>
有几种方法可以解决这个问题。我会提到两个。一个是关于你的交付过程。另一个实际上涉及web.config
1) 不要将web.config作为“代码”发送。考虑它的“配置”。这并不适用于所有场景(事实上,基于客户的场景是我所想到的糟糕场景)。如果您要交付给“生产”,您可以同意让他们负责web.config的内容(一个好的做法是尽可能多地尝试重构machine.config)。这样,像连接字符串这样的事情就变成了生产问题,而不是开发问题
2) 使用configSource属性。ASP.NET 2.0支持使用configSource属性外部化属性。很难将所有web.config转换为“生产问题”(在交付给客户的场景中,他们可能不是这方面的专家)
所以你把它具体化成这样。以下是您当前的appSettings部分,例如:
<appSettings>
<add key="EnableFrobbing" value="false" />
<add key="ExpectFooingFrom" value="fooingserver@domain.com " />
</appSettings>
将配置文件一分为二。一个给你,另一个给你的客户。
客户可以自定义的所有配置都会进入客户配置文件,其他所有配置都会进入您的配置文件
这将使您能够轻松升级/修改配置文件,而不会覆盖客户的配置文件
可以使用元素声明关联的配置文件。告诉你怎么做
我甚至在中使用它来检测ASP.NET中外部配置的更改。将配置文件一分为二。一个给你,另一个给你的客户。
客户可以自定义的所有配置都会进入客户配置文件,其他所有配置都会进入您的配置文件
这将使您能够轻松升级/修改配置文件,而不会覆盖客户的配置文件
可以使用元素声明关联的配置文件。告诉你怎么做
我甚至在中使用它来检测ASP.NET中外部配置的更改。您有几个选项。IMO认为,最好的办法是在将应用程序推送到他们的环境时不发布web配置。如果需要编写新的配置节/设置,您可以封装一些逻辑,以编程方式在小助手应用程序中编写新配置,并将其作为部署后操作运行,也可以将新设置粘贴到电子邮件中,然后发送给另一端您信任的人,将其放入配置中。我建议在99%的情况下反对第二种选择;有很多可能会出现交叉连接或被忽略的情况,那么当系统出现故障时,这是您的问题,因为配置没有进入。您有几个选项。IMO认为,最好的办法是在将应用程序推送到他们的环境时不发布web配置。如果需要编写新的配置节/设置,您可以封装一些逻辑,以编程方式在小助手应用程序中编写新配置,并将其作为部署后操作运行,也可以将新设置粘贴到电子邮件中,然后发送给另一端您信任的人,将其放入配置中。我建议在99%的情况下反对第二种选择;有很多可能会出现交叉连接或被忽略的情况,那么当系统出现故障时,这是你的错,因为配置没有成功。如果你正在编写“交钥匙”软件,由你开发,他们管理,那么你就无法避免让他们玩配置。这一点很好,KeithS。然而,我