无法从 .net 核心应用程序发布到 Azure Web 应用程序

Posted

技术标签:

【中文标题】无法从 .net 核心应用程序发布到 Azure Web 应用程序【英文标题】:Unable to publish to Azure web app from a .net core application 【发布时间】:2017-05-12 16:00:45 【问题描述】:

我很难通过命令行发布到 azure 网站。首先,我尝试使用 VS 生成的 powershell 脚本,这些脚本在 .\Properties\PublishProfiles 中生成。我在Publishing ASP.Net Core app to Azure silently fails in command line 的帖子中提到了答案。我只能将一个参数(即密码)作为发布属性传递。我尝试如下执行

PS D:\Sajan\SampleApplications\ADNext\DotNETCore\DotNetCoreWebApiSample\src\DotNetCoreWebApiSample\Properties\PublishProfiles> & '.\DotnetCoreWebApiSample - Web Deploy-publish' -pa
ckOutput 'D:\Sajan\SampleApplications\ADNext\DotNETCore\DotNetCoreWebApiSample\src\Output' -pubProfilePath 'DotnetCoreWebApiSample - Web Deploy.pubxml'-publishProperties @'Passwor
d' = 'klk' -verbose

上述尝试至少尝试调用 msdeploy,但没有成功。我得到以下输出

使用发布方法发布 [MSDeploy] 执行命令 ["C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:manifest='C:\Users\579859\AppData\Local\Temp\PublishTemp\obj\Output\SourceManifest.xml' -des t:manifest='C:\Users\579859\AppData\Local\Temp\PublishTemp\obj\Output\DestinationManifest.xml',ComputerName='https://dotnetcorewebapisample.scm.azurewebsites.net/msdeploy.axd?site =DotnetCoreWebApiSample',UserName='$DotnetCoreWebApiSample',Password='PASSWORD-REMOVED-FROM-LOG',IncludeAcls='False',AuthType='Basic' -verb:sync -enablerule:AppOffline -enableRu le:DoNotDeleteRule -retryAttempts:20] 信息:使用 ID '25f52554-53e4-4a74-8392-df82e2a07806' 连接到远程服务器。

我不确定这里出了什么问题。我也尝试传递多个参数,如下所示,但是powershell报告了一些语法错误。

 PS D:\Sajan\SampleApplications\ADNext\DotNETCore\DotNetCoreWebApiSample\src\DotNetCoreWebApiSample\Properties\PublishProfiles> & '.\DotnetCoreWebApiSample - Web Deploy-publish' -pa
    ckOutput 'D:\Sajan\SampleApplications\ADNext\DotNETCore\DotNetCoreWebApiSample\src\Output' -pubProfilePath 'DotnetCoreWebApiSample - Web Deploy.pubxml'-publishProperties @'usernam
    e' = 'myusername' 'Password' = 'uL''AllowUntrustedCertificate' = false''AuthType' = 'Basic' -verbose

最后我尝试像下面这样直接使用 Msdeploy

@echo off
dotnet publish ".\DotNetCoreWebApiSample" --framework netcoreapp1.0 --output "D:\Sajan\SampleApplications\ADNext\DotNETCore\DotNetCoreWebApiSample\src\Output" --configuration Release
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:contentPath='D:\Sajan\SampleApplications\ADNext\DotNETCore\DotNetCoreWebApiSample\src\Output',-dest:contentPath='DotnetCoreWebApiSample',ComputerName='https://dotnetcorewebapisample.scm.azurewebsites.net/msdeploy.axd',UserName="myUser",Password="L",IncludeAcls="False",AuthType="Basic" -enablerule:AppOffline -enableRule:DoNotDeleteRule -retryAttempts:20 -verbose

现在我收到错误消息“错误:必须使用 'sync' 动词指定 '-dest' 参数。”我在这里完全一无所知。请注意,我已经提供了 -verb:sync 并且 msdeploy 仍然在抱怨同样的问题。有人可以帮助我如何将带有命令行的 .net 核心 Web 应用程序发布到 azure Web 应用程序。对于 msdeploy,我参考了帖子 http://asp.net-hacker.rocks/2016/07/04/deploy-aspnetcore-to-azure.html。我正在使用版本为“1.0.0-preview2-003131”的 sdk。

【问题讨论】:

How to build an MSDeploy package for an ASP.Net 5 app that targets .Net Core的可能重复 Travis,我使用的是 1.0.1 而不是 RC1。我也在尝试使用 dotnet publish。我在这里有点一头雾水,为什么 msdeploy 会因如此奇怪的错误而失败 最后我发现了 msdeploy 的问题。这是因为 -source:contentPath 后面有逗号。花了很多时间弄清楚。 【参考方案1】:

MSDeploy 调用中的-source 属性末尾有一个逗号,但没有其他标志。将-dest 之前的逗号替换为空格:

-source:contentPath='D:\Sajan\SampleApplications\ADNext\DotNETCore\DotNetCoreWebApiSample\src\Output' -dest:contentPath='D

【讨论】:

以上是关于无法从 .net 核心应用程序发布到 Azure Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

是否可以仅使用用户从我的 .net 核心应用程序登录 Azure 并通过?

无法通过 asp.net 核心服务器端将 ~200mb 文件上传到 azure blob 存储

如何将 local.settings.json 从 azure 函数移植到 .NET 核心 Web 项目?

从 API 身份验证返回的 Azure Blob SAS 网址失败 .net 核心

Azure 静态 Web 应用 Blazor WASM .Net Core API 和标识 - 无法从“_configuration”加载设置

使用 .net 核心 Web API 和 jquery 从 azure blob 上传和检索图像