10
votes

Valeur statique dans web.config

J'ai un projet en cours d'exécution sur 2 serveurs. 1 testeur avec une connexion à un testDB et un sur le serveur réel, avec DB réel.

La seule chose différente de chacune des instances de course de ce projet est la web.config.

Ce que j'aimerais faire, c'est avoir la possibilité de définir une valeur dans web.config, un bool, qui pourrait ensuite être lu par le code. Ce bool serait vrai si l'application est en mode test. Je l'installerais manuellement, le projet le lirait alors, et quand c'est vrai, les mails l'application enverraient, puis seraient conservés internes, afin que les gens ne reçoivent pas de courrier. Je l'ai déjà fait avec définition d'un Static Static Bool dans global.asax mais dans ASP.NET MVC Tout est intégré à une DLL, donc je ne peux donc pas le changer sur le serveur déployé. Dans ce cas.

est-ce possible? ou s'il y aurait-il une belle autre solution?


0 commentaires

6 Réponses :


2
votes

Pourquoi n'utilisez-vous pas appSettings code>?

<configuration>
    <appSettings>
        <add key="myValue" value="true"/>
    </appSettings>
        ....


0 commentaires

0
votes

ASP.NET Webdeploy vous permet de transformer automatiquement votre web.config en fonction de votre déploiement. Par exemple, il peut envoyer une chaîne de connexion lors du déploiement du serveur de test et une chaîne de connexion différente lors du déploiement de Live Server.

http://www.iis.net/download/webdeploy


0 commentaires

3
votes

Oui, vous pouvez:

static public String GetWebConfigKey(string appSettingsKey)
    {
        String value = "";

        System.Configuration.AppSettingsReader asr = new System.Configuration.AppSettingsReader();

        try
        {
            value = asr.GetValue(appSettingsKey, System.Type.GetType("System.String")).ToString();
        }
        catch (KeyNotFoundException knfe)
        {
            throw new KeyNotFoundException("KeyNotFoundException occured in UtilityLibrary.WebConfig.getWebConfigKey" + knfe.Message);
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }

        return value;
    }


1 commentaires

Cela attirant l'exception générale est un mauvais exemple, comment ne pas attraper des exceptions. Quel est son avantage? Vous avez de toute façon une exception, seulement vous en savez moins à ce sujet ...



1
votes

Vous pouvez utiliser votre web.config pour le faire, à l'aide d'appsetting (ConfigurationManager.appsetting ["Key"])

ou, si l'application Yuor s'exécute en mode de débogage sur le serveur de test, vous pouvez le faire, xxx


0 commentaires

0
votes

Si vous utilisez Visual Studio 2010, je vous recommanderais d'utiliser des fichiers de transformation pour transformer le web.config. Plus vous en avez des différences, plus cela vous aidera.

Les étapes de haut niveau:

  1. Créez une nouvelle configuration de construction via Configuration Manager
  2. Définissez les valeurs de manière appropriée dans chaque fichier de configuration nouvellement créé
  3. construire et publier
  4. Fait et que vous ne devez jamais vous rappeler de modifier des valeurs dans plusieurs fichiers de configuration (développement, mise en scène, libération, etc.).

    http://msdn.microsoft.com/en-us/library/ dd465318.aspx


0 commentaires

23
votes

Comme les autres ont dit que c'est ce que la section appsettings de votre web.config est pour xxx

qui peut être accessible à l'aide de WebConfigurationManager xxx

Cependant,

Si vous ne souhaitez pas envoyer de courriels lorsque vous testez, vous pouvez utiliser le web.config pour configurer .NET pour vider les courriels à un répertoire local plutôt que d'expédier au serveur de messagerie xxx

Ceci fonctionnera si votre code ne remplace pas les paramètres de serveur SMTP par défaut de courrier par défaut.


0 commentaires