尝试用Azure托管一个测试站点,但SQL数据库无法传输
本文关键字:站点 测试 SQL 数据库 传输 一个 Azure | 更新日期: 2023-09-27 18:04:40
我是一个新的web开发人员,我试图用Azure测试服务托管一个测试站点。
我可以看到测试网站(你可以访问这个测试):http://kencast20160830102548.azurewebsites.net/
然而,如果你去服务-> Fazzt ->设备和应用程序页面,我得到这个错误:
错误。处理请求时发生错误。发展模式切换到开发环境将显示有关所发生错误的更详细信息。
开发环境不应该在部署的应用程序中启用,因为它可能导致异常的敏感信息显示给最终用户。对于本地调试,可以通过将ASPNETCORE_ENVIRONMENT环境变量设置为development,并重新启动应用程序来启用开发环境。"
这些页面依赖于SQL数据库,所以我认为这就是问题所在。
我一直在尝试遵循这里发布的说明:https://docs.asp.net/en/latest/tutorials/publish-to-azure-webapp-using-vs.html
然而,我不能找到"配置SQL数据库"弹出框时登录到我的微软Azure帐户。
说明似乎与Azure中存在的内容不一致。
更新——8/31/2016
我已经研究并了解了更多:我有一个项目与两个DBContexts。
当我发布到Azure时,它从ApplicationDBContext发布表,而不是从MyCompanyContext发布表。我可以使用SQL Server对象资源管理器进行验证。我可以在应用设置中看到我的本地连接字符串。ApplicationDB和MyCompanyDB的json文件。以下是appsettings.json中的代码:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)''mssqllocaldb;Database=aspnet-MyCompany-3097a012-5e00-4c25-ad83-2730b4d73b4b;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"Data": {
"MyCompanyContext": {
"ConnectionString": "Server=(localdb)''mssqllocaldb;Database=MyCompanyContext-f9de2588-77e8-41dd-abb3-84341610b31a;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
}
然而,当我看"SQL Server对象资源管理器"窗口时,我看到托管在Azure上的数据库,mycompanydb.database.windows.net(SQL Server 11.0.9231 -mycompanydb, MyCompany_db)只有来自"DefaultConnection"数据库的表,而没有来自"MyCompanyContext"。
我如何从第二个数据库(MYCompanyContext)到Azure的表?
我一直在研究这个堆栈溢出响应,但它在PMC中使用Enable-Migration。当我这样做时,我得到一个错误,enable-migrations是过时的。
在本地,我总是这样做迁移:add-migrations -c MyCompanyContext
如果你能给我任何帮助,我将非常感激。谢谢!
从评论中,我猜你需要确保你的上下文都应用在这样的启动类
services.AddEntityFramework().AddSqlServer()
.AddDbContext<MyCompanyContext>(options => options.UseSqlServer(Configuration.Get("Data:SQL")))
.AddDbContext< ApplicationDBContext >(options => options.UseSqlServer(Configuration.Get("Data:SQL")));
上面的假设了两件事:1)您在appsettings.json
"Data": {
"SQL": "Server=tcp:yourDbServer.database.windows.net,1433;Initial Catalog=yourDb;Persist Security Info=False;User ID=youId;Password=YourPswd;MultipleActiveResultSets=True;TrustServerCertificate=False;Connection Timeout=30;",
}
2)两个上下文共享相同的Db,如果不是,则替换适当的连接字符串(确保它与您在appsettings.json
中使用它的方式相匹配)作为上下文,如以下示例:
.AddDbContext<MyCompanyContext>(options => options.UseSqlServer(Configuration.Get("Data:SQL2")));