web-dev-qa-db-fra.com

ASP.NET MVC3: les paramètres de l'application de débogage et de publication ne fonctionnent pas

Mes paramètres d'application de débogage et de publication web.config ne sont pas lus correctement.

Web.config:

<appSettings>
 <add key="webpages:Version" value="1.0.0.0"/>
 <add key="ClientValidationEnabled" value="true"/>
 <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>

Web.Debug.config

<appSettings>
    <add key="ErrorEmailAddress" value="[email protected]" />
    <add key="TestModeEmailAddress" value="[email protected]" />
</appSettings>

Web.Release.config

<appSettings>
    <add key="ErrorEmailAddress" value="[email protected]" />
</appSettings>

Cependant, en appelant:

WebConfigurationManager.AppSettings["ErrorEmailAddress"]

renvoie null (lors du débogage).

J'ai essayé d'ajouter xdt: Transform = "Insert" par exemple.

<add key="ErrorEmailAddress" value="[email protected]" xdt:Transform="Insert" />

Des idées?

27
Alistair

Ok je l'ai compris.

Répondu ici: Comment puis-je utiliser Web.debug.config dans le serveur de débogage Visual Studio intégré?

Ainsi, les fichiers de configuration ne sont combinés que lorsque vous publiez, pas lorsque vous exécutez sur un serveur local. IMO assez stupide, quand pourriez-vous utiliser Web.Debug.config?

Je ferai ce qui est suggéré ici: tilisez la transformation Visual Studio web.config pour le débogage

et juste avoir Web.config comme mon fichier de configuration de débogage par défaut, puis avoir la version pour la libération. Impossible de voir une utilisation de Web.Debug.config comme ce point.

Pourtant, c'est ennuyeux parce que la plupart de mes paramètres que je veux être définis dans un sens pour tous les environnements mais lors du développement (par exemple customErrors On). Cela signifie que je dois les définir dans Web.config pour le débogage, puis dans tous mes autres configurations d'environnement les changer.

Merci à tous pour les réponses.

47
Alistair
<!-- Web.Config -->
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings configSource="AppSettings.config" />
</configuration>

<!-- AppSettings.config -->
<appSettings>
<add key="MyDoe" value="Arnold" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
</appSettings>

<!-- Web.Release.Config -->
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.Microsoft.com/XML-Document-Transform">
<compilation xdt:Transform="RemoveAttributes(debug)" />
<appSettings>
<add key="MyDoe" value="John" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
</appSettings>
</configuration>
10
Bjoern

Je l'ai découvert,

vous allez d'abord ajouter les entrées des paramètres d'application sur appSetting du web.Config avec des valeurs vides ou avec des valeurs de débogage

<add key="Environment" value="Localhost" />

alors vous ajoutez la même chose avec les différentes valeurs sur le web.release.config mais ajoutez la partie transformation

 <add key="Environment" value="DifferentValue"  xdt:Transform="Replace" xdt:Locator="Match(key)"/>

Ensuite, lorsque vous publiez le site Web en mode édition, vous obtiendrez les valeurs d'édition, vous pouvez également ajouter la même chose à la configuration de débogage, puis publier dans la configuration de débogage avec des valeurs différentes

7
Mustafa Magdy

Je ne l'ai jamais fait travailler sans avoir la clé dans le web.config par défaut.

Cela fonctionne pour moi:

Web.config

<add key="Environment" value="Localhost" />

Web.Debug.config

<add key="Environment" value="Development" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>

Web.Release.config

<add key="Environment" value="Production" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
2
RPM1984

Pourriez-vous publier tous vos web.configs? Par défaut, déboguer et publier? Une façon de tester si cela fonctionne est peut-être de définir quelque chose comme différentes chaînes de connexion pour le débogage et la publication et de vérifier celle qu'il utilise lorsque votre application est en cours d'exécution.

1
mymex1

déboguez-vous en mode release? dans la barre d'outils à côté de la flèche verte utilisée pour démarrer le débogage, vous pouvez définir un mode, assurez-vous qu'il n'est pas disponible.

0
m4tt1mus