代码之家  ›  专栏  ›  技术社区  ›  ThunderDev

Azure虚拟目录中的多个站点

  •  1
  • ThunderDev  · 技术社区  · 7 年前

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

    virtual-directories-config

    当我部署api和identity项目时,它们工作得很好。然而,当部署单页应用程序时,api和标识停止工作。

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

    这个错误会立即出现,所以我想它可能在启动初期就失败了。 单页应用程序工作正常。

    here 忽略路由,但我得到了同样的错误。

    我已经试过了 here 以获得更具描述性的错误,但没有效果。

    不知道从这里去哪里

    1 回复  |  直到 7 年前
        1
  •  3
  •   David Ebbo    7 年前

    问题的原因是根应用程序和子应用程序都添加了 aspNetCore 处理器,导致配置系统崩溃。你可以通过打开 详细错误消息 在Azure门户中,然后在 D:\home\LogFiles\DetailedErrors . 您将看到以下错误:

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

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

    第一种是使用 location 标记以防止继承。具体来说,更改根应用程序的 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>
    

    第二种方法是删除 <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>