我需要在同一个域上部署3个asp.net核心站点(子域名不能与我的SSL证书一起使用)。
当我部署api和身份项目时,它们工作正常。但是,在部署单页应用程序时,api和身份停止工作。
The page cannot be displayed because an internal server error has occurred.
错误立即出现,所以它可能在启动早期失败,我猜。 单页应用程序运行正常。
似乎水疗中心正在干扰,我尝试了here的解决方案来忽略路线,但我得到了同样的错误。
我已尝试使用解决方案here来获取更具描述性的错误,但无济于事。
不知道从哪里开始
答案 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>