2017-02-15 15 views
5

Нет руководства, по-видимому, совершенно ясно (по крайней мере, мне) о том, как можно настроить производственные настройки. Они просто говорят о том, как это работает, но нет пошагового руководства. Я сделал следующее:Развертывание сценариев создания/производства Asp.net Core

Попытки изменить переменные среды в проекте с помощью этого Guide

я получаю эту ошибку, несмотря на Microsoft Doc явного указания для повторного использования ASPNETCORE_ENVIRONMENT. Я не могу сохранить эти настройки

Shows an ! next to ASPNETCORE_ENVIRONMENT

Игнорирование этого вопроса, похоже, вы можете вручную создать эти записи в launchSettings.json поэтому у меня есть:

{ 
    "iisSettings": { 
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": { 
     "applicationUrl": "http://localhost:18549/", 
     "sslPort": 44319 
    } 
    }, 
    "profiles": { 
    "IIS Express": { 
     "commandName": "IISExpress", 
     "launchBrowser": true, 
     "launchUrl": "api/v10Staff", 
     "environmentVariables": { 
     "ASPNETCORE_ENVIRONMENT": "Development", 
     "ASPNETCORE_ENVIRONMENT_T": "Test" 
     } 
    }, 
    "IIS Express (Stage)": { 
     "commandName": "IISExpress", 
     "launchBrowser": true, 
     "launchUrl": "api/v10Staff", 
     "environmentVariables": { 
     "ASPNETCORE_ENVIRONMENT": "Stage" 
     } 
    }, 
    "ApplicationName": { 
     "commandName": "Project", 
     "launchBrowser": true, 
     "launchUrl": "http://localhost:60000", 
     "environmentVariables": { 
     "ASPNETCORE_ENVIRONMENT": "Development", 
     "ASPNETCORE_ENVIRONMENT_T": "Test" 
     } 
    } 
    } 

Добавление переменной окружения к серверу

Я добавил переменную среды в соответствии с документацией, которую я отправил в Control Panel > System > Advanced system settings. Добавлена ​​новая переменная пользователя. «ASPNETCORE_ENVIRONMENT» со значением «Stage»

Конфигурация Кусок с помощью этого Guide

Следующий вопрос у меня есть, никто не показывает рабочий «преобразование» в appsettings.Stage.json. Он просто полностью использует файл Stage над файлом appsettings? Нужно ли просто прямо указывать, что другое? Здесь мы говорим о моих файлах.

appsettings.Stage.json

{ 
    "WebServiceAccount": { 
    "AccountName": "WebUser", 
    "AccountPass": "Wedontcarethatthisishere" 
    }, 
    "ServerLocation": { 
    "ServerName": "http://appss.domain.com:8080", 
    "DBConnection": "server=svAppNameSTG;Max Pool Size=6000;database=ES;Integrated Security=SSPI;MultipleActiveResultSets=True" 
    } 
} 

appsettings.json

{ 
    "WebServiceAccount": { 
    "AccountName": "WebUser", 
    "AccountPass": "testpass1" 
    }, 
    "ServerLocation": { 
    "ServerName": "http://appst.domain.com:8080", 
    "DBConnection": "server=svAppNameTST;Max Pool Size=6000;database=ES;Integrated Security=SSPI;MultipleActiveResultSets=True" 
    } 
} 

Я знаю, что настройки и конфигурации частей установлены правильно. Потому что наша тестовая среда работает. Когда я развертываю это на нашем сервере Stage, я подтвердил, что он все еще указывает на поле Test.

Если у кого-нибудь есть руководство или вы можете определить, что не так с этим, это было бы здорово.

потомству

здесь строитель Startup

var builder = new ConfigurationBuilder() 
       .SetBasePath(env.ContentRootPath) 
       .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
       .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
       .AddEnvironmentVariables(); 
      Configuration = builder.Build(); 

ответ

4

Прежде всего, вы, кажется, пытаетесь использовать ASPNETCORE_ENVIRONMENT переменных несколько раз в первом скриншоте. Вам не следует добавлять новые переменные, а вместо этого изменять значение переменной переменной, чтобы отразить среду, которую вы хотите использовать.Поэтому для локального тестирования Stage просто измените значение переменной ASPNETCORE_ENVIRONMENT от Development до Stage.

Я не сталкивался с использованием переменной ASPNETCORE_ENVIRONMENT_T для чего угодно. Если это то, что вы добавили, я подозреваю, что это связано с неправильным пониманием вышеизложенного, и, вероятно, лучший способ добиться того, чего вы хотите. Следует подчеркнуть, что все в launchSettings.json предназначено для вашей локальной машины/среды разработки.


Установка ASPNETCORE_ENVIRONMENT переменных от стадии или производства серверов будет отличаться в зависимости от того, как вы размещаете. IIS? Azure? AWS? Docker? Следующий ответ обсуждает установки переменных окружения для IIS:

Publish to IIS, setting Environment Variable


Что касается appsettings.json, значения объединяются. Сначала все сначала считывается из базового файла, а затем все, прочитанные с appsettings.{env.EnvironmentName}.json, будут добавлять или перезаписывать то, что находится в базовом файле. В приведенном примере переменная WebServiceAccount/AccountName может быть опущена из appsettings.Stage.json, так как она идентична значению в базе.