Проблема appSettings и ConfigurationManager.AppSettings - PullRequest
17 голосов
/ 03 апреля 2009

Я искал сайт, и хотя я нашел некоторую очень полезную информацию, я не мог понять, что происходит с моим кодом. У меня есть следующий web.config:

<?xml version="1.0"?>
<configuration>
  <system.web>
  </system.web>

  <system.webServer>
  </system.webServer>

  <appSettings>
    <add key="APIKey" value="23e24c73feed7ca0f6afd876575842de"/>
    <add key="Secret" value="################################"/>
    <add key="Callback" value="http://localhost:55994/"/>
    <add key="Suffix" value="My3Words"/>
  </appSettings>
</configuration>

Я вырезал материал в system.web и system.webServer, но это настройки по умолчанию, созданные в приложении ASP.NET MVC.

Я пытаюсь получить доступ к ключам в разделе (это простое приложение Facebook, использующее FB Connect).

В моем коде у меня есть следующая строка:

return ConfigurationManager.AppSettings["APIKey"];

и он возвращает ноль. Я не могу понять, что происходит. У меня есть реквизиты:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Configuration;

вверху моего файла .cs. У меня очень сильное подозрение, что ошибка существует после клавиатуры (то есть в моем мозгу), но я не могу решить эту проблему. Есть идеи?

Ответы [ 8 ]

29 голосов
/ 03 апреля 2009

Вы пытались использовать WebConfigurationManager :

return System.Web.Configuration.WebConfigurationManager.AppSettings["APIKey"];

Это предпочтительный вариант для использования файлов конфигурации в веб-приложении - он обрабатывает такие вещи, как вложенные файлы конфигурации и т. Д.

9 голосов
/ 16 апреля 2009

Visual Studio создает 2 файла web.config для MVC. 1 в корне, а другой в папке Views.

4 голосов
/ 19 ноября 2013

Вы уверены, что используете правильный файл Web.Config? Вы, вероятно, хотите использовать тот, который находится в корне приложения, а не тот, который находится в каталоге Views.

ASP.NET MVC и два файла Web.config

1 голос
/ 03 апреля 2009

Имеет ли ваш machine.config необходимый раздел AppSettings. Это должно выглядеть примерно так (номера версий будут другими):

<configuration>
   <configSections>
       <section name="appSettings"
          type="System.Configuration.NameValueFileSectionHandler, System,          Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   </configSections>
</configuration>

Вы уверены, что используете правильный файл web.config? Как выглядит ConfigurationManager.AppSettings.Settings ?

1 голос
/ 03 апреля 2009

Убедитесь, что для параметра «Действие сборки» файла web.config указано «Нет». Я видел эту проблему, если действие по сборке - «Встроенный ресурс».

0 голосов
/ 01 апреля 2013

У меня есть два проекта в моем решении. Сначала я добавляю файл app.config в проект библиотеки классов, все экземпляры которого вызываются из консольного приложения. Я добавил эти записи в файл конфигурации в проекте класса lib

<appSettings> 
<add key="userName" value="user2" /> 
<add key="emilsLimit" value="50" /> 
</appSettings>

выдает нулевое исключение, когда я получаю их в классе в проекте библиотеки классов, но когда я удаляю app.config из проекта библиотеки классов и добавляю в проект консоли, это работает.

Примечание: ссылка на проект класса lib добавлена ​​в консоль

0 голосов
/ 03 апреля 2009

Бьюсь об заклад, вы используете правильный синтаксис для доступа к ним при написании:

Попробуйте этот формат для веб-конфигурации

<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<appSettings>
    <add key="Key1" value="Val1"/>
    <add key="Key2" value="Val2"/>
</appSettings>
<connectionStrings>
    ......
    ......
</connectionStrings>
<system.web>
    <sessionState mode="InProc" timeout="20"/>
    <authorization>
        ......
    </authorization>

    <pages>
        <namespaces>
            <add namespace="System.Data"/>
            <add namespace="System.Data.SqlClient"/>
            <add namespace="System.IO"/>
        </namespaces>
    </pages>
    <customErrors mode="Off"/>
    <compilation debug="true"/></system.web>
</configuration>
0 голосов
/ 03 апреля 2009

Вы пробовали:

return ConfigurationManager.AppSettings.Get("APIKey");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...