【发布时间】:2017-10-25 20:58:26
【问题描述】:
我需要为每个环境使用特定的 web.config 发布我的网站,以便将环境变量 ASPNETCORE_ENVIRONMENT 设置为“开发”或“生产”。
这可以通过发送带有该内容的 web.config 来实现:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\myProject.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</configuration>
我有 2 个不同的环境:“开发”和“生产”。 我使用以下命令使用 webploy 部署我的 asp.net 核心网站:
msbuild myProject.csproj /p:PublishProfile=webdeploy-dev /p:DeployOnBuild=true
/p:AllowUntrustedCertificate=True /p:Password=...
我的 webdeploy 配置文件中没有特别的东西
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<PublishProvider>AzureWebSite</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<ExcludeApp_Data>False</ExcludeApp_Data>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish>https://my.test.com</SiteUrlToLaunchAfterPublish>
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<MSDeployServiceURL>my.test.com</MSDeployServiceURL>
<DeployIisAppPath>my.test.com</DeployIisAppPath>
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod> <!-- MsDepSvc , WMSVC, RemoteAgent -->
<EnableMSDeployBackup>True</EnableMSDeployBackup>
<AuthType>NTLM</AuthType>
<UserName>myusername</UserName>
<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
</PropertyGroup>
</Project>
如何在 .csproj 或 webdeploy 配置文件或其他任何地方配置我的 asp.net 核心项目,以便自动将适当的 web.config(或修改其内容)发送到相应的环境?
【问题讨论】:
-
我很困惑。您肯定会在目标机器上适当地设置环境变量,然后再也不用担心了吗?您是说目标机器可以在开发和生产之间切换吗?
-
不,机器是不同的,你是绝对正确的@Cal279,我能做的最好的事情就是直接在机器上设置这个环境变量。这已经是我所做的,我认为这是最好的做法。稍后我将发布一个答案以关闭该问题。谢谢
标签: asp.net-core iis-8 webdeploy asp.net-core-1.1