azure - Azure Web App 中 EntityFramework Core 的连接字符串
问题描述
我的 Azure Web 应用程序中的 Azure SQL DB (SQL PaaS) 连接字符串存在问题。它在应用程序配置的“连接字符串”设置中定义。我在https://myAppName.scm.azurewebsites.net/Env.cshtml#connectionStrings中看到了 Conn 字符串值(格式如下)。我定义的 Conn 字符串名称是“MyApp”,Azure 会按照您的预期为其添加前缀“SQLAZURECONNSTR_”。
SQLAZURECONNSTR_MyApp = Server=tcp:mysvr.database.windows.net,1433;Initial Catalog=MyApp;Persist Security Info=False;User ID=user@mysvr;Password=passWord;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
在 Startup.cs 中,虽然我不确定是否有必要,但我有这个。
public void ConfigureServices(IServiceCollection services)
{
[...]
services.AddDbContext<MyAppContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyApp")));
在我的数据库上下文类中,我有以下内容:
public partial class MyAppContext : DbContext
{
[...]
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.Development.json", optional: true, reloadOnChange: true)
.Build();
var connectionString = configuration.GetConnectionString("MyApp");
optionsBuilder.UseSqlServer(connectionString);
}
}
}
访问执行连接到数据库的方法的 Web 应用程序时,我收到对 conn 字符串的空引用。
ArgumentNullException: Value cannot be null. (Parameter 'connectionString')
Microsoft.EntityFrameworkCore.Utilities.Check.NotEmpty(string value, string parameterName)
Microsoft.EntityFrameworkCore.SqlServerDbContextOptionsExtensions.UseSqlServer(DbContextOptionsBuilder optionsBuilder, string connectionString, Action<SqlServerDbContextOptionsBuilder> sqlServerOptionsAction)
myapp.Models.MyAppContext.OnConfiguring(DbContextOptionsBuilder optionsBuilder) in MyAppContext.cs
本地 .json 文件中没有定义任何 conn 字符串,但我想在某些时候将其添加回来以用于开发目的。
解决方案
最新
代码优先。
connectionStr 应该是这样的。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="SchoolDBConnectionString" connectionString="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;" providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
私人的
数据库第一。
您的项目使用ef core
,所以connectionstrings
应该如下所示。
<connectionStrings>
<add name="SchoolDBEntities" connectionString="metadata=res://*/SchoolDB.csdl|res://*/SchoolDB.ssdl|res://*/SchoolDB.msl;provider=System.Data.SqlClient;provider connection string="data source=.\sqlexpress;initial catalog=SchoolDB;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient"/>
</connectionStrings>
更多详细信息,您可以参考我在帖子中的回答。
您也可以参考本教程,这将对您有所帮助。
推荐阅读
- python - 如何在 BeautifulSoup 4 中找到明文兄弟?
- r - 如何将特定的'NA'值(不是全部'NA')替换为R数据框中的特定数值?
- javascript - 添加第二个幻灯片后幻灯片停止工作
- ios - WKWebView PDF 旋转固定
- c - 如何使用 GDB 调试共享对象库中的函数?
- clojure - 如何让这个函数在 Clojure 中工作?
- sql - 不带空值的数据透视表
- java - 编写一个程序,搜索一个数组以找到第一个奇数
- html - How to print to HTML Template
- c - Kotlin-Multiplatform 中的 CPointer