2016-12-01 3 views
1

У меня есть файл Web.config с некоторыми элементами там, но в зависимости от того, я ли в режиме отладки или выпуска, когда я выполняю свое веб-приложение local, я хочу использовать различные настройки приложений.Web.Debug.config vs. Web.Release.config работает веб-приложение в localhost

Например, предположим, что у меня есть следующая запись в моем приложении Web.Debug.config appSettings.

<add key="MyServiceUrl" value="http://my-test-site:8080/" /> 

А также у меня есть это в моем Web.Release.config:

<add key="MyServiceUrl" value="http://my-prod-site:80/" /> 

Как мне настроить мой Web.Config, Web.Debug.Config и Web.Release.Config поэтому в зависимости от в режиме я запускаю свое приложение локально (Отладка - любой процессор против Релиз - любой CPU), он принимает правильное решение?

В настоящий момент единственная пара ключей и значений, которые она принимает, - это одна из основных Web.Config, независимо от того, что я выбираю Debug или Release в Visual Studio.

Как настроить это поведение?

EDIT

Это, как я определил Web.config

<appSettings> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings> 

Это, как я определил Web.Debug.config

<appSettings> 
    <add key="MyServiceUrl" value="http://my-test-site:8080/" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/> 
</appSettings> 

Это, как я есть определенный Web.Release.config

<appSettings> 
    <add key="MyServiceUrl" value="http://my-prod-site:8080/" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" /> 
</appSettings> 

Наконец, в моем коде, у меня есть следующий метод:

public static string GetAppSetting(string settingKey) 
     { 
      if (string.IsNullOrEmpty(settingKey)) 
       throw new System.ArgumentException("Cannot fetch a setting for a null/empty setting key."); 
      return ConfigurationManager.AppSettings[settingKey]; 
     } 

, который я называю это следующим образом: параметр строки = GetAppSetting ("MyServiceUrl");

Однако нулевое значение, если он не определен в основном Web.config

+0

Пожалуйста, добавьте _

+0

Или используйте: _xdt: Transform = "Insert" _ –

ответ

1

В web.Release.config попробовать это, он должен работать:

<appSettings> 
<add key="MyServiceUrl" value="http://my-prod-site:8080/" xdt:Transform="Insert" /> 
</appSettings> 

Прочитайте это: Web.config Transformation Syntax for Web Application Project Deployment

+0

К сожалению, точно такая же вещь случается. Ни одна из записей не заполняется, когда я вызываю GetAppSetting, если запись не существует в файле web.config. И ... если он существует, он принимает все, что находится в главном web.config, а не из Debug или Release. – user3587624

+0

Что делать, если вы удаляете ** static **? from: _публичная статическая строка GetAppSetting (string settingKey) _ –

+0

Это то же самое. Он получает один из основного web.config – user3587624

Смежные вопросы