【问题标题】:How to use WebDeploy with ASP.Net core如何将 WebDeploy 与 ASP.Net 核心一起使用
【发布时间】:2016-12-02 09:58:56
【问题描述】:

我们有一个自动将 WebDeploy-Packages 发布到 IIS 服务器的更新程序。该程序适用于 MVC 5 - Applications 但不适用于 .Net Core Applications。我们使用 Microsoft.Web.Deployment - API,我的发布方法如下所示:

private void UpdateIIS(DTOs.ApplicationConfiguration.ApplicationServer applicationServer, DTOs.Update.Update update) {
    // SSL-Zertifikatsfehler ignorieren
    System.Net.ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(
        (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) => { return true; });
    var sourceBaseOptions = new DeploymentBaseOptions();
    var destBaseOptions = new DeploymentBaseOptions() {
        ComputerName = string.Format("https://{0}:{1}/msdeploy.axd?site={2}", applicationServer.Adresse, applicationServer.MSDeployPort, applicationServer.SiteName),
        UserName = applicationServer.User,
        Password = applicationServer.Passwort,
        AuthenticationType = "Basic"
    };
    string updatePackage = Directory.GetFiles(update.UpdateDirectory, "*.zip").FirstOrDefault();
    if (!File.Exists(updatePackage)) {
        throw new Exception("Update-Paketdatei nicht gefunden");
    }
    using (var deploymentObject = DeploymentManager.CreateObject(
        DeploymentWellKnownProvider.Package,
        updatePackage,
        sourceBaseOptions)
    ) {
        if (deploymentObject.SyncParameters.Count > 0) {
            deploymentObject
            .SyncParameters
            .Single(p => p.Name == "IIS Web Application Name")
            .Value = applicationServer.SiteName;
        }


        var syncOptions = new DeploymentSyncOptions();
        var changes = deploymentObject.SyncTo(
            DeploymentWellKnownProvider.Auto,
            "",
            destBaseOptions,
            syncOptions
        );
    }
}

我没有收到任何错误,但网站没有改变。

【问题讨论】:

    标签: iis asp.net-core msdeploy webdeploy


    【解决方案1】:

    是的,您可以将 WebDeploy 与 ASP.NET Core 一起使用。关键是使用 PackagePublish 目标和包发布配置文件:

    D:\GitHub\AcmeApp.NET\src\AcmeApp.NET.Web>"c:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild" /t:PackagePublish /p:PublishProfile=Package
    

    http://www.dotnetcatch.com/2016/09/20/webdeploy-packaging-with-asp-net-core/

    【讨论】:

    • 无论出于何种原因,/t:PackagePublish 在我尝试时总是返回错误The target "PackagePublish" does not exist in the project。这仍然是要走的路吗?
    • 你用的是什么版本的Core?
    • 看起来像 1.1.1(最近安装了它,所以您可以假设是最新版本)。
    • 我无法让它工作,我收到以下错误:error MSB4041: The default XML namespace of the project must be the MSBuild XML namespace. If the project is authored in the MSBuild 2003 format, please add xmlns="http://schemas.microsoft.com/developer/msbuild/2003" to the <Project> element. If the project has been authored in the old 1.0 or 1.2 format, please convert it to MSBuild 2003 format.。我完全不知道如何部署 .NET Core 应用程序!
    • 你能在 Github 上分享一个 repro 吗?
    猜你喜欢
    • 2018-07-17
    • 2019-08-14
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多