Azure WebApp Asp.NET Core 2 错误:启动应用程序时出错

Posted

技术标签:

【中文标题】Azure WebApp Asp.NET Core 2 错误:启动应用程序时出错【英文标题】:Azure WebApp Asp.NET Core 2 error: An error occurred while starting the application 【发布时间】:2018-04-18 11:32:39 【问题描述】:

我已将 asp.net core 1.1 升级到 asp.net core 2。它在本地服务器上运行良好,但是当我尝试将其部署到 Azure 托管的 Web 应用程序时,我收到了错误:

启动应用程序时出错。 .NET 核心

4.6.00001.0 X86 v4.0.0.0 | Microsoft.AspNetCore.Hosting 版本 2.0.0-rtm-26452 |微软视窗 6.2.9200

有什么想法吗?

【问题讨论】:

如果您收到startup 错误,您可以启用额外的启动选项来输出实际原因。看看我的博客文章。 pkula.blogspot.co.uk/2017/11/… 可能重复:***.com/questions/43493259/… @PiotrKula OMG,谢谢 :) 我在启动时创建数据库时遇到问题 很高兴它有帮助。他们可以做到我模板注释掉左右 【参考方案1】:

请在您的应用的应用设置中添加ASPNETCORE_DETAILEDERRORS = true,重新启动它,下次加载网址时查看详细错误。 这将帮助您解决它。

例如,我的错误是我的 API 应用程序的托管标识未配置为访问 Key Vault 以获取存储帐户和 Cosmos DB 密钥。我使用启动来注入配置的存储和 cosmos db 对象,因此在我启动我的应用程序时它失败了。

解决启动问题后,不要忘记删除此设置,因为如果将其保持打开状态,可能会在出现其他错误时向访问者公开有关应用程序如何工作的信息。 p>

【讨论】:

作为参考,请转到您的 Azure 仪表板 -> 所有资源 -> 您的应用服务 -> 左侧边栏中的应用程序设置 -> 向下滚动到 Application settings 这是一个键:值对设置,输入以上内容。重新启动您的 Web 应用程序,您应该会显示一个很好的错误消息。感谢 Suneet,这解决了几个小时的调试问题! 有效,但您想在生产站点上使用它/保持启用它吗? @Andrew 绝对不会。解决问题后禁用此功能。不想在不需要时泄露 prod 中的故障排除详细信息。 这成功了!只是似乎设置的位置对我来说不同。它位于应用服务 -> 配置下(在左侧导航的设置部分中)。有没有办法记录这些信息,以便我以后可以看到但在生产站点中对用户不可见? 请有人为非天蓝色应用程序提供这些说明:/【参考方案2】:

从https://scottsauber.com/2017/04/10/how-to-troubleshoot-an-error-occurred-while-starting-the-application-in-asp-net-core-on-iis/得到我的提示

    打开您的 web.config 更改 stdoutLogEnabled=true 创建日志文件夹 不幸的是,默认情况下 AspNetCoreModule 不会为您创建文件夹 如果您忘记创建日志文件夹,则会在事件查看器中记录一条错误消息:警告:无法创建 stdoutLogFile \?\YourPath\logs\stdout_timestamp.log,ErrorCode = -2147024893。 值“.\logs\stdout”的“stdout”部分实际上引用的是文件名而不是文件夹。这有点令人困惑。 再次运行您的请求,然后打开 \logs\stdout_*.log 文件

注意 - 完成故障排除后,您需要将其关闭,因为它会影响性能。

所以你的 web.config 的 aspNetCore 元素应该看起来像这样

<aspNetCore processPath=”.\YourProjectName.exe” stdoutLogEnabled=”true” stdoutLogFile=”.\logs\stdout” />

【讨论】:

看起来像什么? 一旦你在 web.config 中启用它,你如何告诉 IIS 在那里登录?即使更改 web.config 并重新启动服务器,它也不会记录任何错误!在某个地方是否还有另一个特殊的、隐藏的、秘密的环境?我讨厌 IIS,因为即使是最简单的事情(例如记录错误),也缺少完成所需的完整步骤。 添加到上面的@NoloMokgosi 答案。不要忘记为新创建的日志文件夹赋予适当的权限。@MC900 你赋予了适当的权限吗?【参考方案3】:

Program.cs 中启用DetailedErrorsKey,以便您了解发生了什么。

WebHost.CreateDefaultBuilder(args)
    .UseSetting(WebHostDefaults.DetailedErrorsKey, "true")

【讨论】:

【参考方案4】:

您可以通过启用ASPNETCORE_DETAILEDERRORS = true获取更多详细信息:

转到您的 Azure 仪表板 -> 您的应用服务

在您的应用程序设置中(在左侧边栏中)-> 向下滚动到 配置 这是一个键值对设置,输入以上内容。 重新启动您的网络应用。

【讨论】:

【参考方案5】:

尝试通过触发命令来执行应用程序

dotnet myapplicationname.dll

这将引发启动错误,并可以帮助您缩小错误范围。

【讨论】:

我正在使用以下命令获取这些行:C:\inetpub\2>dotnet DiscountPoolBackbone.dll 信息:Microsoft.Hosting.Lifetime[0] 现在正在收听:localhost:5000 信息:Microsoft。 Hosting.Lifetime[0] 现在正在监听:localhost:5001 信息:Microsoft.Hosting.Lifetime[0] 应用程序已启动。按 Ctrl+C 关闭。信息:Microsoft.Hosting.Lifetime[0] 托管环境:生产信息:Microsoft.Hosting.Lifetime[0] 内容根路径:C:\inetpub\2【参考方案6】:

我自己设法解决了这个问题,我希望这个解决方案可以帮助别人。

首先,我在 Azure 服务器上设置了日志文件夹,并找到了更多详细信息的问题。 我忘记了 SQL 中的一些数据库更改。更新数据库更改并运行它现在工作正常。

【讨论】:

请说明您如何“在 Azure 服务器上设置日志文件夹”。 @Andrew 在 FTP 服务器上的以下位置创建文件夹“/site/wwwroot/logs”也在 webconfig 文件中配置,如下所示“"【参考方案7】:

通过从应用程序发布的可执行文件启动应用程序,我能够发现此错误的异常情况。

要在本地尝试,您可以右键单击 Web 项目,单击发布,然后将其发布到文件夹。与项目同名的文件夹中应该有一个可执行文件。运行它,它应该会在控制台中显示异常。

【讨论】:

以上是关于Azure WebApp Asp.NET Core 2 错误:启动应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure 上部署 Asp.NET Core Web App

Web 应用程序之间的 Asp.Net Core DataProtection 无法在 Azure 上运行

Azure ASP .net WebApp 请求超时

Azure 中的 ASP.NET WebApp 使用大量 CPU

Azure中使用大量CPU的ASP.NET WebApp

ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行