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