为什么我在 Web.Config 中找不到带有 WebConfigurationManager 的 AppSetting?
Why can I not find an AppSetting in my Web.Config with WebConfigurationManager?
我的解决方案中有 2 个项目。
1 是一个 MVC Web 应用程序
另一个是带有 Web Service
的空网站
昨天我通过右键单击 Web 服务项目添加了一个设置,然后转到属性 => 手动添加设置。
这将创建一个设置文件并将设置添加到 Web.Config。
今天我手动修改了 Web.config 文件(我不确定是不是这个原因)但出于某种原因,以下代码无法从我的 Web.Config 中获取我的设置:
string connstring = WebConfigurationManager.AppSettings["someString"];
只是returns空
设置名称正确。
MVC 项目也以同样的方式添加了设置,在那里我可以毫无问题地获得所有设置。
我尝试过的事情:
- Double/Triple/Quadruple 检查设置名称是否正确
- 我已经以管理员身份重新启动 visual studio。
- 我删除了设置文件并重新创建了它。 => 这也会自动修改 Web.Config
- 检查是否有对 System.Configuration
的引用
我注意到的另一件奇怪的事情如下:
当我立即在 window 中键入 "WebConfigurationManager" => 看起来其中有 0 个 AppSettings。
它还表明我有 2 个连接字符串,但它们实际上不存在(如果我执行 Ctrl+Shift+F,则无法在解决方案中找到):
这是连接字符串 "WebConfigurationManager.ConnectionStrings[0]" returns:
ConnectionString: "data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
我几乎认为它打开错误 Web.config(但在我的任何项目中都没有,因为我的解决方案中不存在上面的连接字符串)
感谢任何提示!!
额外信息,web.config 的内容:
.....
<applicationSettings>
<SomeWebServices.Properties.Settings>
<setting name="someString" serializeAs="String">
<value>DATA SOURCE=abcdefg;USER ID=ABC;PASSWORD=abc987</value>
</setting>
<setting name="someOtherString" serializeAs="String">
<value>DATA SOURCE=abcde;USER ID=ABC;PASSWORD=abc654</value>
</setting>
</SomeWebServices.Properties.Settings>
</applicationSettings>
由于您在 web.config 中使用的是 applicationSettings
而不是 appSettings
,因此您需要通过 Properties.Settings.Default.someString
访问您的设置
如果您想使用 string connstring = WebConfigurationManager.AppSettings["someString"];
,您必须在 web.config.
的 appSettings
部分添加设置
编辑:
如果您真正想要的是放置连接字符串的地方,您应该遵循 并使用 web.config.
的 connectionStrings
部分
如果您使用 .NET 3.5 或更高版本,请不要在 web.config 中使用 appsettings。而是使用 web.config.
中的 connectionStrings 部分
试试这个 web.config
<connectionStrings>
<add name="myConnectionString" connectionString="server=localhost;database=myDb;uid=myUser;password=myPass;" />
</connectionStrings>
我的解决方案中有 2 个项目。 1 是一个 MVC Web 应用程序 另一个是带有 Web Service
的空网站昨天我通过右键单击 Web 服务项目添加了一个设置,然后转到属性 => 手动添加设置。
这将创建一个设置文件并将设置添加到 Web.Config。
今天我手动修改了 Web.config 文件(我不确定是不是这个原因)但出于某种原因,以下代码无法从我的 Web.Config 中获取我的设置:
string connstring = WebConfigurationManager.AppSettings["someString"];
只是returns空
设置名称正确。 MVC 项目也以同样的方式添加了设置,在那里我可以毫无问题地获得所有设置。
我尝试过的事情:
- Double/Triple/Quadruple 检查设置名称是否正确
- 我已经以管理员身份重新启动 visual studio。
- 我删除了设置文件并重新创建了它。 => 这也会自动修改 Web.Config
- 检查是否有对 System.Configuration 的引用
我注意到的另一件奇怪的事情如下:
当我立即在 window 中键入 "WebConfigurationManager" => 看起来其中有 0 个 AppSettings。 它还表明我有 2 个连接字符串,但它们实际上不存在(如果我执行 Ctrl+Shift+F,则无法在解决方案中找到): 这是连接字符串 "WebConfigurationManager.ConnectionStrings[0]" returns:
ConnectionString: "data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
我几乎认为它打开错误 Web.config(但在我的任何项目中都没有,因为我的解决方案中不存在上面的连接字符串)
感谢任何提示!!
额外信息,web.config 的内容:
.....
<applicationSettings>
<SomeWebServices.Properties.Settings>
<setting name="someString" serializeAs="String">
<value>DATA SOURCE=abcdefg;USER ID=ABC;PASSWORD=abc987</value>
</setting>
<setting name="someOtherString" serializeAs="String">
<value>DATA SOURCE=abcde;USER ID=ABC;PASSWORD=abc654</value>
</setting>
</SomeWebServices.Properties.Settings>
</applicationSettings>
由于您在 web.config 中使用的是 applicationSettings
而不是 appSettings
,因此您需要通过 Properties.Settings.Default.someString
如果您想使用 string connstring = WebConfigurationManager.AppSettings["someString"];
,您必须在 web.config.
appSettings
部分添加设置
编辑:
如果您真正想要的是放置连接字符串的地方,您应该遵循
connectionStrings
部分
如果您使用 .NET 3.5 或更高版本,请不要在 web.config 中使用 appsettings。而是使用 web.config.
中的 connectionStrings 部分试试这个 web.config
<connectionStrings>
<add name="myConnectionString" connectionString="server=localhost;database=myDb;uid=myUser;password=myPass;" />
</connectionStrings>