ASP.NET Web App - 调试器的连接字符串

时间:2017-03-23 22:11:12

标签: asp.net debugging web-applications connection-string appsettings

我是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),执行顺利。

我相信,应用程序设置中的“环境”键用于在调试时识别连接字符串。我想知道我在这里是对还是错。

如果我错了,我该如何为调试分配一个特定的连接字符串。

谢谢

1 个答案:

答案 0 :(得分:2)

看看你想要做什么,我认为你需要考虑使用web.config转换。

看一下关于这个主题Transform Web.Config

的非常好的指南

你是正确的,名称参考是应用程序设置正在寻找的,所以如果你在web.config而不是你的代码中更改它,它会对你大喊大叫! ; - )

ConfigurationMananager.Connections["Test_Two"].ConnectionString

这是您在代码中寻找的内容。但是如果你想要一个不同的数据库连接字符串用于调试和发布,那么这就是你的web.config转换所在的地方。

希望这有帮助。