.Net和默认设置

.Net和默认设置,.net,configuration,.net,Configuration,如果我要从我的应用程序中的配置文件读取连接字符串,并且我需要能够在应用程序从dev移动到uat再移动到prod时更改连接字符串,那么我是否应该使用设置文件,因为在那里连接字符串被编译到我将从一个环境移动到另一个环境的程序集中初始连接字符串是否已过时 这里的最佳实践是什么 编辑: 我一般都会问,因为我既有web服务,也有smartclient应用程序。您想将xml文件用于桌面应用程序,或者如果您正在进行web开发。如果要将xml文件用于桌面应用程序或进行web开发,请参阅“”。请参见“”我通常将连

如果我要从我的应用程序中的配置文件读取连接字符串,并且我需要能够在应用程序从dev移动到uat再移动到prod时更改连接字符串,那么我是否应该使用设置文件,因为在那里连接字符串被编译到我将从一个环境移动到另一个环境的程序集中初始连接字符串是否已过时

这里的最佳实践是什么

编辑:


我一般都会问,因为我既有web服务,也有smartclient应用程序。

您想将xml文件用于桌面应用程序,或者如果您正在进行web开发。如果要将xml文件用于桌面应用程序或进行web开发,请参阅“”

。请参见“”

我通常将连接字符串放入外部配置文件中,并将其从部署中排除: 在web.config中:

<connectionStrings configSource="connections.config"></connectionStrings>

connections.config:

<?xml version="1.0"?>
<connectionStrings>
    <add name="connectionName" connectionString="[connection string goes here]"/>
</connectionStrings>


[更新]这假设您正在构建一个网站;否则,当然是“App.config”,而不是“web.config”

我通常将连接字符串放入外部配置文件中,从部署中排除: 在web.config中:

<connectionStrings configSource="connections.config"></connectionStrings>

connections.config:

<?xml version="1.0"?>
<connectionStrings>
    <add name="connectionName" connectionString="[connection string goes here]"/>
</connectionStrings>


[更新]这假设您正在构建一个网站;否则它当然是“App.config”,而不是“web.config”

如果您的键盘上没有点('.')按钮。去商店买一个新的


我不确定我是否理解你的问题。使用应用程序可执行文件旁边的配置/设置文件。读取该文件中的连接字符串。如果文件丢失,请使用默认url创建新的配置文件?

您的键盘上似乎没有点('.')按钮。去商店买一个新的


我不确定我是否理解你的问题。使用应用程序可执行文件旁边的配置/设置文件。读取该文件中的连接字符串。如果文件丢失,请使用默认url创建一个新的配置文件?

编译配置设置会让我畏缩

但是如果你担心你的配置被坏人看到

加密它:


请记住,加密是基于机器密钥的,因此部署桌面应用程序时效果不太好。

编译配置设置会让我畏缩

但是如果你担心你的配置被坏人看到

加密它:


请记住,加密是基于机器密钥的,因此部署桌面应用程序时不会有太好的效果。

我们使用.config文件的“连接字符串”部分,并具有如下字符串名称:

AppDataInDev和AppData

同样在.config文件中,我们在应用程序设置下有一个名为InDev的键

在数据层中,我们检查InDev的值。如果为true,则使用AppDataInDev初始化数据层;否则,将使用AppData


这使得向prod的过渡管理变得容易。发布到prod时,将InDev的值切换为False,即可完成。(如果是ASP.Net应用程序,请在将CompliationDebug切换为False的同时执行此操作。)

我们使用.config文件的连接字符串部分,并具有如下字符串名称:

AppDataInDev和AppData

同样在.config文件中,我们在应用程序设置下有一个名为InDev的键

在数据层中,我们检查InDev的值。如果为true,则使用AppDataInDev初始化数据层;否则,将使用AppData


这使得向prod的过渡管理变得容易。发布到prod时,将InDev的值切换为False,即可完成。(如果是ASP.Net应用程序,请在将CompliationDebug切换为False的同时执行此操作。)

请澄清,这是web应用程序还是桌面应用程序?没什么大不了的,配置文件名只是不同,但仅此而已。之所以询问是因为加密web.configs很容易。但已部署的桌面应用程序和加密的应用程序配置并不明确。请问,这是web应用程序还是桌面应用程序?没什么大不了的,配置文件名只是不同,但这就是差异所在。我问的原因是加密web.configs很容易。但部署的桌面应用程序和加密的应用程序配置并不是一种有趣的方式。我在machine.config中的dev/production框中加密了连接字符串。对我来说很有用;)我猜你会为IT人员提供一个模板来进行设置,这是一个有趣的方法。我在machine.config中的dev/production框中加密了连接字符串。对我来说很有用;)我想你会为IT人员提供一个模板来进行设置,我知道indev开关如何促进部署,但这样你就可以在配置文件中设置所有连接字符串。在代码中使用dev/prod开关听起来很危险,因为很容易忘记翻转开关。我更希望应用程序抛出异常,而不是使用一些默认的连接字符串进行连接。我理解indev开关如何促进部署,但这样您就可以在配置文件中拥有所有连接字符串。在代码中使用dev/prod开关听起来很危险,因为很容易忘记翻转开关。我宁愿应用程序抛出异常,也不愿使用一些默认连接字符串进行连接。