Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架与具有托管标识的azure SQL数据库发生连接错误_C#_Entity Framework 6_Azure Managed Identity - Fatal编程技术网

C# 实体框架与具有托管标识的azure SQL数据库发生连接错误

C# 实体框架与具有托管标识的azure SQL数据库发生连接错误,c#,entity-framework-6,azure-managed-identity,C#,Entity Framework 6,Azure Managed Identity,web配置中的连接字符串保存用户名和密码,但我不想在web配置中保存密码 我在应用程序中使用实体框架。现在我正在尝试使用具有托管标识的Azure SQL数据库 我试着在文档中使用教程 web配置中的我的连接字符串:- 添加名称=上下文连接字符串=元数据=res:///PubsuiteModel.csdl|res:///PubsuiteModel.ssdl|res://*/PubsuiteModel.msl;provider=System.Data.SqlClient;提供程序连接字符串=serv

web配置中的连接字符串保存用户名和密码,但我不想在web配置中保存密码

我在应用程序中使用实体框架。现在我正在尝试使用具有托管标识的Azure SQL数据库

我试着在文档中使用教程

web配置中的我的连接字符串:-

添加名称=上下文连接字符串=元数据=res:///PubsuiteModel.csdl|res:///PubsuiteModel.ssdl|res://*/PubsuiteModel.msl;provider=System.Data.SqlClient;提供程序连接字符串=server=servername.database.windows.net;数据库=dbname;UID=AnyString;身份验证=Active Directory交互式;MultipleActiveResultSets=True;App=EntityFramework providerName=System.Data.EntityClient

当我试图从数据库中获取记录时,出现以下错误:-

错误:-基础提供程序在打开时失败

InnerException=无法实例化具有的身份验证提供程序 类型 'Microsoft.Azure.Services.AppAuthentication.SqlAppAuthenticationProvider, 用于的Microsoft.Azure.Services.AppAuthentication “ActiveDirectoryInteractive”


如何使用托管标识的azure SQL数据库为entity framework创建连接字符串?

您参考的指南很有帮助,但过于复杂。我自己也在挣扎。一旦你弄明白了,你要做的其实相当简单

首先,您的连接字符串显然应该不包含任何类型的用户和密码,并且应该如下所示:

Server=tcp:<sql-server-name>.database.windows.net,1433;Initial Catalog=<sql-db-name>;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
不要忘记运行SQL命令,将托管标识和潜在的实际DB用户绑定到数据库

在SQL server资源上设置AD admin用户,并以此用户身份登录

运行下面的查询,并在输入应用程序的MI名称时替换。如果MI名称是系统指定的,则默认为应用程序名称。您可以使用主体用户名或AAD组名,而不是MI名称,例如xxx@yyy.com或者我的广告组

从外部提供者创建用户; 更改角色db_datareader添加成员; 更改角色db_datawriter添加成员; 更改角色db_ddladmin添加成员; 去
现在形成了。请把它投上去。@PanagiotisKanavos你能分享一下这个链接吗?这是你用过的链接,但复制不正确。您没有发布您的代码,或者您尝试了什么,或者即使您使用ASP.NET或ASP.NET核心。该教程演示了如何使用ASP.NET或ASP.NET核心。在这两种情况下,它都显示了如何添加必要的提供程序。我正在使用asp.net。我尝试的是最初我使用azure sql db创建了实体框架。它在web配置中存储用户名和密码,但我不希望这样。因此,我尝试了上面的链接,但当我从数据库中获取任何记录时,它会抛出错误。您可以尝试将密码存储在keyvault中,这样更容易。