我是一名新的网络开发人员,正在尝试使用Azure测试服务托管测试网站。
我可以在http://kencast20160830102548.azurewebsites.net/
看到测试网站(您可以访问此网站进行测试)但是,如果你去服务 - > Fazzt - >设备和应用程序页面,我收到此错误:
错误。 处理您的请求时发生错误。 发展模式 交换到开发环境将显示有关发生的错误的更详细信息。
不应在已部署的应用程序中启用开发环境,因为它可能导致将异常的敏感信息显示给最终用户。对于本地调试,可以通过将ASPNETCORE_ENVIRONMENT环境变量设置为Development并重新启动应用程序来启用开发环境。“
这些页面依赖于SQL数据库,所以我认为这就是问题所在。
我一直在尝试按照此处发布的说明进行操作:https://docs.asp.net/en/latest/tutorials/publish-to-azure-webapp-using-vs.html
但登录到我的Microsoft Azure帐户时,我找不到“配置SQL数据库”弹出框。
这些指示似乎与Azure中的内容不符。
更新 - 2016年8月31日
我已经研究和学习了一点: 我有一个带有两个DBContexts的项目。
当我发布到Azure时,它从ApplicationDBContext发布表,但不发布MyCompanyContext中的表。我可以使用SQL Server对象资源管理器验证。 我可以在appsettings.json文件中看到ApplicationDB和MyCompanyDB的本地连接字符串。以下是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?
我一直在研究这个Stack Overflow响应,但它在PMC中使用了Enable-Migration。当我这样做时,我得到一个错误,启用 - 迁移已经过时。
在本地,我总是用这个进行迁移: add-migrations -c MyCompanyContext
您可以给我的任何帮助将不胜感激。
谢谢!
答案 0 :(得分:1)
From the comments, I am guessing you need to ensure both your contexts are applied in the startup class like this
services.AddEntityFramework().AddSqlServer()
.AddDbContext<MyCompanyContext>(options => options.UseSqlServer(Configuration.Get("Data:SQL")))
.AddDbContext< ApplicationDBContext >(options => options.UseSqlServer(Configuration.Get("Data:SQL")));
the above assumes two things:
1) you have the connection string set up like this in your 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) Both the contexts share the same Db, if not then substitute the appropriate connection string (make sure to have it matched to the way you have it in your appsettings.json
) for the context like this sample:
.AddDbContext<MyCompanyContext>(options => options.UseSqlServer(Configuration.Get("Data:SQL2")));