Azure虚拟目录中的多个站点

时间:2017-11-24 11:25:54

标签: azure ssl asp.net-core azure-web-sites virtual-directory

我需要在同一个域上部署3个asp.net核心站点(子域名不能与我的SSL证书一起使用)。

virtual-directories-config

当我部署api和身份项目时,它们工作正常。但是,在部署单页应用程序时,api和身份停止工作。

The page cannot be displayed because an internal server error has occurred.

错误立即出现,所以它可能在启动早期失败,我猜。 单页应用程序运行正常。

似乎水疗中心正在干扰,我尝试了here的解决方案来忽略路线,但我得到了同样的错误。

我已尝试使用解决方案here来获取更具描述性的错误,但无济于事。

不知道从哪里开始

1 个答案:

答案 0 :(得分:3)

问题的原因是root应用程序和子应用程序都添加了aspNetCore处理程序,导致配置系统爆炸。您可以通过在Azure门户中打开详细错误消息,然后在D:\home\LogFiles\DetailedErrors下找到错误页面来查看此信息。你会看到这个错误:

  

无法添加“add”类型的重复集合条目,并将唯一键属性“name”设置为“aspNetCore”

有两种方法可以解决这个问题。

第一种是使用location标记来阻止继承。具体来说,将root应用的web.config更改为以下内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\myapp.dll" stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout" />
  </system.webServer>
</configuration>

这样的事情:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\myapp.dll" stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout" />
    </system.webServer>
  </location>
</configuration>

第二种方法是从 sub - 应用程序中删除<handlers>部分以避免重复(如配置下的doc所示应用):

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <aspNetCore processPath="dotnet" arguments=".\mySubApp.dll" stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout" />
  </system.webServer>
</configuration>