2009-04-02 28 views
15

He buscado en el sitio, y aunque encontré información muy útil, no pude averiguar qué está pasando con mi código. Tengo el siguiente web.config:appSettings y ConfigurationManager.AppSettings problema

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

he cortado con tijeras a cabo las cosas en system.web y system.webServer, pero es la configuración predeterminada que se generan en una aplicación ASP.NET MVC.

Estoy intentando acceder a las teclas en la sección (esta es una aplicación de Facebook simple que usa FB Connect).

En mi código, tienen la siguiente línea:

return ConfigurationManager.AppSettings["APIKey"]; 

y se está volviendo un nulo. No puedo entender qué está pasando. Tengo el requisito:

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

en la parte superior de mi archivo .cs. Tengo una fuerte sospecha de que el error existe después del teclado (es decir, en mi cerebro), pero no puedo resolver este. ¿Algunas ideas?

+0

son usted que llama ConfigurationManager de una DLL externa? – CLaRGe

+0

Llamo a ConfigurationManager desde un archivo .cs que está siendo llamado desde mi HomeController.cs –

+1

No hay mucho que realmente pueda salir mal entre web.config y ConfigurationManager.AppSettings, por lo que es un poco extraño. Para asegurarse de que definitivamente está usando el archivo de configuración correcto, intente hacer que su web.config XML no sea válido y verifique que su sitio web falle. – sipwiz

Respuesta

-1

Ha intentado:

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

Lo intenté ... no funcionó –

1

Compruebe para asegurarse de la Acción de generación del archivo web.config es "Ninguno". He visto este problema si la acción de compilación es "Recurso incrustado".

+1

Se configuró en "contenido" pero configuré "Ninguno" sin ningún efecto. –

1

¿Tiene su machine.config la sección AppSettings necesaria? Debe tener un aspecto algo así como (números de versión sería diferente):

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

¿Seguro que está utilizando el web.config correcta? ¿Cómo es el ConfigurationManager.AppSettings.Settings?

0

Apuesto a usar la sintaxis correcta para acceder a ellos cuando escribe: ConfigurationManager.AppSettings ["Key1"];

Prueba este formato para el web.config

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

¿Ha intentado utilizar el WebConfigurationManager:

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

Ésta es la opción preferida para el uso de los archivos de configuración en una aplicación web - que maneja las cosas como archivos de configuración anidados, etc.

+0

Esto no funcionó aunque tenía varios archivos web.config. He movido el al otro archivo y ambos métodos funcionan bien para obtener la clave. Gracias por la respuesta ... Soy un idiota. –

+1

Ok, entonces, ¿en qué carpeta estaba este web.config? ¿Estaba al menos debajo (en el árbol de carpetas) la ubicación desde la que se estaba ejecutando el código? No eres un idiota;) –

+0

Tuve el mismo problema que @Brandon. Esta respuesta fue la solución para mí. Mi proyecto era una biblioteca de servicios WCF y cuando lo alojé en IIS y moví la configuración a Web.config desde App.config. – kenny

8

Visual Studio crea 2 archivos web.config para MVC. 1 en la raíz y el otro en la carpeta Vistas.

0

Tengo dos proyectos en mi primera solución agrego app.config archivo en proyecto de biblioteca de clases que todos los casos es llamada de aplicación de consola he añadido estas entradas en el archivo de configuración en el proyecto lib clase

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

era lanzando una excepción nula cuando los obtengo en una clase en un proyecto de biblioteca de clase, pero cuando elimino app.config del proyecto de biblioteca de clase y lo agrego en el proyecto de consola, funciona.Saludos

Nota: Se añade referencia del proyecto lib clase en la consola

4

¿Estás seguro de que está utilizando el archivo Web.config correcto? Probablemente desee utilizar el que está en la raíz de la aplicación, no el que está en el directorio de Vistas.

ASP.NET MVC and two Web.config files

+0

¡siéntete como un verdadero muppet por hacer esto! gracias por poner lo básico :) – SM3RKY

Cuestiones relacionadas