c# - ASP.NET MVC:从 SQL Server Express 迁移到 Azure
问题描述
我确定以前有人问过这个问题,但是我在类似的问题中没有看到任何内容。:(
我有一个在本地开发的 ASP.NET MVC 应用程序,它一直在使用 SQL Server Express 数据库。在 Azure 中,我重新创建了数据库并获取了它提供的连接字符串,并更新了web.config
我的应用程序中的连接字符串以使用新数据库。
当我将应用程序发布到 Azure 时,似乎没有任何问题。但是,当我在访问数据库的应用程序中点击一个页面时,它会抛出一个错误,抱怨它找不到 SQL Server Express 数据库。以下是错误的主要片段:
SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。
服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:52 - 无法找到本地数据库运行时安装。验证 SQL Server Express 已正确安装并且本地数据库运行时功能已启用。)
因此,它似乎忽略了我的连接字符串并仍在寻找本地存储的 SQL Server Express 数据库,而不是使用我在连接字符串中指定的 Azure 数据库。任何想法为什么会这样?我的猜测是我错过了一些非常基本的东西(我通常的猜测是当看起来应该很简单的东西不起作用时。:))
每个以下请求的连接字符串:
当地的:
<add name="FCDbContext" connectionString="data source=(localdb)\MSSQLLocalDB;initial catalog=FormCenterResponder;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
Azure 连接字符串:
<add name="FCDbContext" connectionString="Server=tcp:***azuredbserver here***,1433;Initial Catalog=***azuredb here***;Persist Security Info=False;User ID=***username here***;Password=***password here***;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient" />
并根据另一个请求配置服务(这几乎是默认值):
public void ConfigureServices(IServiceCollection service)
{
services.AddControllersWithViews();
}
解决方案
好的,将此标记为 asp.net/c# noob。不过,我会继续发布(令人尴尬的)答案,以防其他人发现自己处于我的位置。
一位同事查看了代码并在这里找到了一个很好的教程。他能够弄清楚我做错了什么。
基本上,我从未在 Startup.ConfigureServices 中注册过数据库上下文。我认为这就是为什么有人(后来删除了他们的问题)要求我发布我的代码的那部分。然后控制器文件可以读取该上下文,授予他们访问数据库所需的信息。
应用程序现在可以正常工作。
推荐阅读
- c# - VSTO 加载项:检测签入/签出文档或功能区 UI 更改事件
- python - 如何在 Python 中显示消息?
- arduino - NodeMCU说等待数据包头超时
- coq - 构建匹配时如何获取子项的类型
- javascript - 使用 jQuery 设置输入的值不起作用
- mongoose - 猫鼬:更新json数组中的元素
- go - 尝试连接到 mailtrap smtp 时,获得第一条记录看起来不像 TLS 握手
- acumatica - 创建快速流程,如操作按钮,可在一个步骤中创建装运、确认装运、更新 IN、发票和发布
- java - 防止 SQL 连接池的数据库上下文更改
- graph - TraMineR 图上的图边距太大