将aspnet5应用部署到Azure网站的虚拟目录

3

使用新的PowerShell发布工具进行非虚拟目录部署时的默认文件夹结构如下:

/data
/LogFiles
/site
/site/appRoot
/site/wwwroot
/site/wwwroot/web.config
/site/locks
/site/deployments

当将新应用程序部署到虚拟目录时:

enter image description here

结构变成如下:

/site/wwwroot/approot
/site/wwwroot/testvirt
/site/wwwroot/testvirt/web.config

这是在wwwroot文件夹中创建虚拟目录approot的预期方式吗?在放置approot方面是否有任何灵活性?当添加下一个虚拟应用程序时会发生什么情况,查看文件结构会覆盖第一个虚拟应用程序的approot?

2个回答

4

相关信息可以在这里找到:https://github.com/aspnet/dnx/issues/928#issuecomment-171617386

我通过在Azure门户上设置虚拟目录设置来实现了3个虚拟应用程序的并行运行,如下所示:enter image description here

然后我使用命令行将我的Web应用程序部署到所有3个虚拟应用程序中进行测试,就像Visual Studio正在执行的方式一样。

"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:IisApp='C:\Users\pks\AppData\Local\Temp\PublishTemp\appname53' -dest:IisApp='appname/app2',ComputerName='https://appname.scm.azurewebsites.net/msdeploy.axd',UserName='$appname',Password='',IncludeAcls='False',AuthType='Basic' -verb:sync -enableLink:contentLibExtension  -retryAttempts:2

并按照 @davidfowl 在 Github 中的建议,手动将 web.config 复制到父文件夹中。

目前使用 Visual Studio 工具无法直接发布此行为。如果只需要根目录和一个额外的虚拟应用程序,则可以通过 Visual Studio 使其正常工作。如果需要更多,则 approots 文件夹将发生冲突。

我还遇到了一个错误(不确定是否由于大量手动复制 web.config),即虚拟应用程序已经添加了 httpplatform 处理程序,并且开始抛出 500 错误,解决方法是更新 web.config。

 <handlers>
      <remove name="httpplatformhandler" />
      <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
    </handlers>

1
我一直在使用Azure Web应用程序服务的虚拟应用程序目录。在Azure中,以下处理程序将始终附加在子虚拟应用程序的web.config中,无论如何!
<handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>

诀窍在于通过添加以下代码来删除处理程序“aspNetCore”:使用以下代码:
<handlers>
      <remove name="aspNetCore"/>
</handlers>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接