Używam Azure DevOps do kompilowania i zwalniania aplikacji sieci web .NET Core MVC do wystąpienia Windows Server 2016 EC2 w AWS.
Mam różne środowiska, więc stworzyłem następujące pliki appsettings.json:
- appsettings.DEV.json
- appsettings.STG.json
- appsettings.PRD.json
Po kilku badaniach widzę, że możemy ustawić zmienną ASPNETCORE_ENVIRONMENT w pliku web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\www.MyApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="[ENV]" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
Następnie mogę załadować odpowiedni plik appsetting.json środowiska, używając następującego kodu w Program.cs:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(ConfigConfiguration)
.UseStartup<Startup>();
static void ConfigConfiguration(WebHostBuilderContext ctx, IConfigurationBuilder config)
{
config.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{ctx.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true);
}
}
Dla każdego wdrożenia chciałbym kontrolować web.config, który zostanie wdrożony, dzięki czemu mogę kontrolować wartość ASPNETCORE_ENVIRONMENT. Podobnie jak web.config transform w tradycyjnym środowisku ASP.NET.
Czy można to zrobić w Azure DevOps lub za pomocą ustawienia w programie Visual Studio? Czytałem, że .NET Core 2.2 zaoferuje na to rozwiązanie, ale co można w międzyczasie zrobić?
1 odpowiedź
Używam standardowych przekształceń web.config (wdrożenie w IIS)
Transformacja web.staging.config:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<location>
<system.webServer>
<aspNetCore>
<environmentVariables>
<environmentVariable xdt:Transform="Replace" xdt:Locator="Match(name)" name="ASPNETCORE_ENVIRONMENT" value="Staging" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
Podobne pytania
Nowe pytania
c#
C # (wymawiane „patrz ostro”) jest językiem programowania wysokiego poziomu, statycznie typowanym, wieloparadygmatowym opracowanym przez firmę Microsoft. Kod C # zwykle jest przeznaczony dla rodziny narzędzi Microsoft .NET i czasów wykonywania, do których należą między innymi .NET Framework, .NET Core i Xamarin. Użyj tego tagu w przypadku pytań dotyczących kodu napisanego w C # lub C # formalnej specyfikacji.