我是ASP.Net网络应用程序开发的新手,我正在努力学习。
我有一个ASP.NET Web应用程序,其中调试时使用特定的连接字符串(按F5)。以下是 Web.config 文件中的连接字符串和应用设置:
<appSettings>
<add key="Environment" value="TEST"/>
</appSettings>
<connectionStrings>
<add name="TEST" connectionString="Server=mySQLExpressServerAddress;Database=myDataBase;Trusted_Connection=True;" />
<add name="DEV" connectionString="a connection to the test server db" />
<add name="PROD" connectionString="a connection to the prod server db" />
</connectionStrings>
到此为止,当我调试时(按F5)。执行顺利。
当我从连接字符串中注释掉TEST时,添加如下的辅助连接字符串:
<appSettings>
<add key="Environment" value="TEST"/>
</appSettings>
<connectionStrings>
<!-- <add name="TEST" connectionString="Server=mySQLExpressServerAddress;Database=myDataBase;Trusted_Connection=True;" /> -->
<add name="TEST_TWO" connectionString="Server=mySQLExpressServerAddress;Database=myDataBase;Trusted_Connection=True;" />
<add name="DEV" connectionString="a connection to the test server db" />
<add name="PROD" connectionString="a connection to the prod server db" />
</connectionStrings>
并调试应用程序(按F5),有一个空指针异常。执行细节如下:
System.NullReferenceException was unhandled by user code
HResult=-2147467261
Message=Object reference not set to an instance of an object.
现在,如果我将应用程序设置中的环境值从test更改为test_two(同时保留注释的TEST连接字符串),如下所示:
<appSettings>
<add key="Environment" value="TEST_TWO"/>
</appSettings>
<connectionStrings>
<!-- <add name="TEST" connectionString="Server=mySQLExpressServerAddress;Database=myDataBase;Trusted_Connection=True;" /> -->
<add name="TEST_TWO" connectionString="Server=mySQLExpressServerAddress;Database=myDataBase;Trusted_Connection=True;" />
<add name="DEV" connectionString="a connection to the test server db" />
<add name="PROD" connectionString="a connection to the prod server db" />
</connectionStrings>
并调试应用程序(按F5),执行顺利。
我相信,应用程序设置中的“环境”键用于在调试时识别连接字符串。我想知道我在这里是对还是错。
如果我错了,我该如何为调试分配一个特定的连接字符串。
谢谢
答案 0 :(得分:2)
看看你想要做什么,我认为你需要考虑使用web.config转换。
看一下关于这个主题Transform Web.Config
的非常好的指南你是正确的,名称参考是应用程序设置正在寻找的,所以如果你在web.config而不是你的代码中更改它,它会对你大喊大叫! ; - )
ConfigurationMananager.Connections["Test_Two"].ConnectionString
这是您在代码中寻找的内容。但是如果你想要一个不同的数据库连接字符串用于调试和发布,那么这就是你的web.config转换所在的地方。
希望这有帮助。