Azure 部署后 ASP.NET Core MVC webapp 错误

Posted

技术标签:

【中文标题】Azure 部署后 ASP.NET Core MVC webapp 错误【英文标题】:ASP.NET Core MVC webapp error after Azure deployment 【发布时间】:2020-12-30 09:56:30 【问题描述】:

我使用 CRUD 在 ASP.NET Core MVC 中编写了一个应用程序以部署到 Azure,首先使用代码。我遵循了这个教程:https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-dotnet-sqldatabase

本教程有点过时,但我相信我正确地遵循了它。我还尝试使用示例应用程序从字面上遵循教程,但我遇到了同样的问题。我可以提供一张图片,但错误页面的描述性不是很好。它说:

错误:处理您的请求时出错。 请求 ID:|bac57a49-4ca7848aebbdb3cb。

开发模式 切换到开发环境将显示有关所发生错误的更详细信息。

不应为已部署的应用程序启用开发环境。它可能导致向最终用户显示来自异常的敏感信息。对于本地调试,通过将 ASPNETCORE_ENVIRONMENT 环境变量设置为 Development 并重新启动应用程序来启用开发环境。

坦率地说,我不知道如何进行。我觉得连接字符串有问题,因为除非您点击访问数据库的页面,否则该站点可以正常工作。在appsettings.json 文件中,唯一可用的连接字符串如下:

"ConnectionStrings": 
    "PostContext": "Server=(localdb)\\mssqllocaldb;Database=PostContext-1;Trusted_Connection=True;MultipleActiveResultSets=true"
  

我并不一定希望 VS2019 自己添加连接字符串,但这不是教程中的步骤,所以我自己没有接触。

我还注意到有一些问题似乎相关,但似乎也没有明确的答案。 2018 年有一个解决方案,this,它引用了托管模型问题,但那是 2 年前的事了。

任何帮助或指导将不胜感激。

编辑:我在 azure 中使用了应用程序日志记录系统。这是回应:

2020-09-11 22:57:18.620 +00:00 [错误] Microsoft.EntityFrameworkCore.Database.Command:执行 DbCommand 失败(5 毫秒) [参数=[],CommandType='Text',CommandTimeout='30'] 选择 [p].[Two]、[p].[OneAgent]、[p].[OneDate]、[p].[OnePartyId]、[p].[OneStage]、[p].[OneTitle]FROM [ PostOnes] AS [p]

还有一个错误:

2020-09-11 22:57:18.644 +00:00 [错误] Microsoft.EntityFrameworkCore.Query: 迭代上下文类型“RyneAura.Data.PostContext”.Microsoft.Data.SqlClient.SqlException的查询结果时发生异常 (0x80131904): 无效的对象名称 'PostOnes'.at Microsoft.Data.SqlClient.SqlCommand.c。 [...]

我不确定它们是什么意思。

【问题讨论】:

数据库连接字符串是否正确?第二个错误表示它无法在数据库中找到表PostOne。因此,您需要确保应用程序连接的任何数据库都具有该表。它还有助于您了解 Therese 错误消息在 msdn 中的含义。通过错误消息在 google 中搜索可能会将您带到好文章。 您确定您的数据库名称是 PostContext-1 吗?我的意思是为什么那是-1? 【参考方案1】:

我认为这个问题的原因是the wrong connection string

您可以参考my answer in this post。这是我5月份发布的答案,但是官方文档可能会迁移。你可以下载你正在看的文档中的示例代码,按照我的建议试一试。一定能帮你解决问题。

排查数据库连接错误:

    如果您使用的是azure sql server,请检查门户中的防火墙设置(通常用于本地调试和特殊网段的限制)。

    检查数据库名称是否一致,数据库表结构、存储过程、函数等是否与测试环境一致。

    azure sql server的连接字符串格式如下:

    Data Source=tcp:servername.database.windows.net,1433;Initial Catalog=db;
    Persist Security Info=False;
    User ID=user;Password=mypassword;
    MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;
    Connection Timeout=30;
    

    传送门中的配置高于web.config中的配置,详情可以查看我的回答。

【讨论】:

【参考方案2】:

错误是由于错误的连接字符串引起的。如果要部署到 Azure 应用服务,则需要有一个如下所示的连接字符串;

Server=tcp:[serverName].database.windows.net;Database=myDataBase;
User ID=[LoginForDb]@[serverName];Password=myPassword;Trusted_Connection=False;
Encrypt=True;

请关注The Official Documentation 这将指导您完成故障排除过程

【讨论】:

【参考方案3】:

我有解决问题的方法。我必须手动选中该框才能在发布时触发迁移。

https://docs.microsoft.com/en-us/aspnet/core/tutorials/publish-to-azure-webapp-using-vs?view=aspnetcore-3.1

【讨论】:

这不是解决方案,而是解决方法。将您的答案标记为已接受可能会阻止其他用户发布他们的解决方案

以上是关于Azure 部署后 ASP.NET Core MVC webapp 错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure 上部署 Asp.NET Core Web App

到 Azure ACI 的基本容器化 ASP.NET 3.1 Core 应用部署失败

将 ASP.NET Core 6 应用部署到现有的 Azure 应用服务?

ASP.NET Core在Azure Kubernetes Service中的部署和管理

在 Azure WebApps 中运行64位 Asp.net Core 应用

创建 Github CI/CD Pipeline 并部署到 Azure 云 Asp.net core 和 React Project