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

Deploying aspnet5 apps to virtual directories on azure websites

使用 none 虚拟目录的新 powershell 发布工具部署时的默认文件夹结构是

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

然后在将新应用程序部署到虚拟目录时:

结构变为

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

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

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

通过在 Azure 门户上设置虚拟目录设置,我设法并排获得 3 个虚拟应用程序 运行,如下所示:

然后我使用命令行将我的 webapp 部署到所有 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

并手动复制到 web.config 到父文件夹,如@davidfowl 建议的 github 所示。

因此目前无法直接使用 visual studio 工具来发布此行为。如果只需要 root 和一个额外的虚拟应用程序,应该可以让它与 visual studio 一起工作。如果想要更多,approots 文件夹将发生冲突。

我也 运行 遇到一个错误(不确定是否是由于大量手动 web.config 复制)虚拟应用程序已经添加了 httpplatform 处理程序并且它开始抛出 500 个错误并且修复是更新 web.config

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

我一直在使用 Azure Web 应用服务虚拟应用程序目录。在 Azure 中,以下处理程序将始终附加到子虚拟应用程序的 web.config 中,无论如何!

<handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>

诀窍是通过使用以下代码添加以下代码来删除处理程序 "aspNetCore":

<handlers>
      <remove name="aspNetCore"/>
</handlers>