Проблема с установками приложений и 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");