【问题标题】:Why can I not find an AppSetting in my Web.Config with WebConfigurationManager?为什么使用 WebConfigurationManager 在我的 Web.Config 中找不到 AppSetting?
【发布时间】:2015-04-22 09:32:09
【问题描述】:

我的解决方案中有 2 个项目。 1 是一个 MVC Web 应用程序 另一个是带有 Web Service 的空网站

昨天我通过右键单击 Web 服务项目并转到属性 => 手动添加设置。

这会创建一个设置文件并将设置添加到 Web.Config。

今天我手动修改了 Web.config 文件(我不确定这是不是这个原因),但由于某种原因,以下代码无法从我的 Web.Config 中获取我的设置:

string connstring = WebConfigurationManager.AppSettings["someString"];

它只是返回 null

设置名称正确。 MVC 项目也以相同的方式添加了设置,在那里我可以毫无问题地获取所有设置。

我尝试过的事情:

  • 双重/三重/四重检查设置名称是否正确
  • 我已经以管理员身份重新启动了 Visual Studio。
  • 我已删除设置文件并重新创建它。 => 这也会自动修改 Web.Config
  • 检查是否有对 System.Configuration 的引用

我注意到的另一件奇怪的事情是:

当我在即时窗口中键入“WebConfigurationManager”时 => 看起来里面有 0 个 AppSettings。 它还表明我有 2 个连接字符串,但它们确实不存在(如果我执行 Ctrl+Shift+F,则无法在解决方案中找到): 这是连接字符串“WebConfigurationManager.ConnectionStrings[0]”返回:

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>

【问题讨论】:

    标签: c# asp.net asp.net-mvc web-config


    【解决方案1】:

    由于您在 web.config 中使用 applicationSettings 而不是 appSettings,因此您需要通过 Properties.Settings.Default.someString 访问您的设置

    如果您想使用 string connstring = WebConfigurationManager.AppSettings["someString"];,您必须在 web.config 的 appSettings 部分添加设置。

    编辑:
    如果您真正想要的是放置连接字符串的地方,您应该关注 BilginAksoy's answer 并使用 web.config 的 connectionStrings 部分。

    【讨论】:

      【解决方案2】:

      如果您使用 .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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-15
        • 2013-12-06
        • 2012-01-21
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多