2009-04-02 3 views
15

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

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

+0

Вы призываете ConfigurationManager от внешнего DLL? – CLaRGe

+0

Я вызываю ConfigurationManager из файла .cs, который вызывается из моего HomeController.cs. –

+1

Существует не так много, что может действительно пойти не так, как между web.config и ConfigurationManager.AppSettings, так что это немного странно. Чтобы проверить, что вы определенно используете правильный файл конфигурации, попробуйте сделать ваш web.config недействительным XML и проверить, что ваш веб-сайт не удается? – sipwiz

ответ

-1

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

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

Пробовал это ... это не сработало –

1

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

+1

Было установлено значение «content», но я установил значение «None» без эффекта. –

1

Имеет ли ваш 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?

0

Держу пари, используя правильный синтаксис для доступа к ним при написании: 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> 
28

Вы пробовали с помощью WebConfigurationManager:

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

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

+0

Это не сработало, хотя у меня было несколько файлов web.config. Я переместил в другой файл, и оба метода отлично работают для получения ключа. Спасибо за ответ ... Я идиот. –

+1

Итак, в какой папке находился этот web.config? Было ли хотя бы под (в дереве папок) местоположение, из которого был запущен код? Вы не идиот;) –

+0

У меня была такая же проблема, как @Brandon. Этот ответ был для меня решением. Мой проект был WCF Service Library, и когда я разместил его в IIS и переместил конфигурацию в Web.config из App.config. – kenny

8

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

0

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

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

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

Примечание: Класс ссылка Lib Проект будет добавлен в консоли

4

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

ASP.NET MVC and two Web.config files

+0

чувствую себя настоящим маппетом для этого! спасибо за установку основ :) – SM3RKY