Проблема с установками приложений и ConfigurationManager.AppSettings

Я искал сайт, и пока я нашел очень полезную информацию, я не мог понять, что происходит с моим кодом. У меня есть следующий 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. У меня очень сильное подозрение, что существует ошибка после клавиатуры (т.е. В моем мозгу), но я не могу решить эту проблему. Любые идеи?

Ответы

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

Убедитесь, что действие сборки файла web.config равно "None". Я видел эту проблему, если действие сборки - "Встроенный ресурс".

Ответ 5

Имеется ли в файле 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?

Ответ 6

Держу пари, используя правильный синтаксис для доступа к ним при написании: ConfigurationManager.AppSettings [ "Key1" ];

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

<?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>

Ответ 7

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

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

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

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

Ответ 8

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

return ConfigurationManager.AppSettings.Get("APIKey");