【问题标题】:How to configure deployment of asp.net core website?asp.net核心网站如何配置部署?
【发布时间】: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


【解决方案1】:

正如@CalC 所说,我只是想在不同的目标机器上设置环境变量。因此,发布一个将覆盖该值的 web.config(可能已经在本地设置)肯定是危险的,而且绝对不是这样做的好方法。

所以答案是:您不应该将 web.config 发布到您的发布文件夹,而是直接在目标机器/文件夹上更新它。 也可以使用此处未介绍的其他方法设置此环境变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    相关资源
    最近更新 更多