我正在尝试使用 Azure Pipelines 将我的 .NET Framework MVC 应用程序部署到 VM。
相关代码:
- task: IISWebAppManagementOnMachineGroup@0
inputs:
IISDeploymentType: 'IISWebsite'
ActionIISWebsite: 'CreateOrUpdateWebsite'
WebsiteName: 'MySite'
WebsitePhysicalPath: 'D:/MySite/WebUi'
WebsitePhysicalPathAuth: 'WebsiteUserPassThrough'
CreateOrUpdateAppPoolForWebsite: true
AppPoolNameForWebsite: 'DefaultAppPool'
DotNetVersionForWebsite: 'No Managed Code'
PipeLineModeForWebsite: 'Integrated'
AppPoolIdentityForWebsite: 'ApplicationPoolIdentity'
AddBinding: true
Bindings: |
{
bindings:[
{
"protocol":"http",
"ipAddress":"",
"hostname":"",
"port":"802",
"sslThumbprint":"",
"sniFlag":false
}
]
}
- task: IISWebAppDeploymentOnMachineGroup@0
inputs:
WebSiteName: 'MySite'
Package: '$(Pipeline.Workspace)/drop/WebUi/WebUi.zip'
结果是,在 IIS 管理器中,我可以看到新站点已在“站点”文件夹下创建,但是当我按“浏览 *:802 (http)”时,我收到默认的 IIS 404 错误(HTTP 错误) 404.0 - 未找到), 详细信息:
Detailed Error Information:
Module IIS Web Core
Notification MapRequestHandler
Handler StaticFile
Error Code 0x80070002
Requested URL http://localhost:802/
Physical Path D:/MySite/WebUi
Logon Method Anonymous
Logon User Anonymous
虽然,当我将此网站应用程序池从非托管更改为 v4.0 时,我收到标准网络浏览器错误:
This localhost page can’t be found
No webpage was found for the web address: http://localhost:802/
HTTP ERROR 404
不是应用程序池不受管理时的详细 IIS 错误。
基本设置(如物理路径)很好,指向驱动器上的正确位置,其中包含文件夹:bin、Content、fonts、Scripts、Views 和文件:favicon、global.asax、packages.config、web.config、所以看起来不错。
我检查过的内容:
DotNetVersionForWebsite: 'No Managed Code'
更改为 DotNetVersionForWebsite: 'v4.0'
并将应用程序池更改为 v4.0 没有任何区别。此应用程序之前已通过 WebUi 文件夹的 ctrl+c 和 ctrl+v 内容更新(在其他虚拟机上),因此应用程序本身没问题。
我发现的事情是,在应用程序运行良好的虚拟机上,在转到基本 URL(例如 servername.internal.com)后,它会自动重定向到 servername.internal.com/WebUi,并且在我的有问题的情况,它没有重定向到任何地方。
我不知道还应该检查什么。也许有什么方法可以从其他虚拟机(应用程序运行良好)转储 IIS 设置,以便将其与有问题的虚拟机 IIS 设置进行比较?
请首先尝试手动设置站点,然后将应用程序内容复制并粘贴到其物理路径,然后再集成到管道中。这将有助于排除该服务器上的 IIS 功能、应用程序本身或部署工具造成的原因。
站点物理路径有可能被该服务器上的其他进程占用。在 IIS 部署期间,您可能需要重置 IIS 或使应用程序脱机进行测试。
- powershell: |
iisreset /noforce
displayName: Reset IIS
retryCountOnTaskFailure: 6
- task: IISWebAppDeploymentOnMachineGroup@0
inputs:
WebSiteName: 'MySite'
Package: '$(System.DefaultWorkingDirectory)\**\*.zip'
TakeAppOfflineFlag: true