如何获取 EF Core DbConnection/DbContext 的 IP 地址?

How can I get the IP address of an EF Core DbConnection/DbContext?

提问人:nitzanms 提问时间:11/16/2023 更新时间:11/16/2023 访问量:39

问:

我想跟踪特定 EF Core DB 连接用于连接到 Azure SQL 的 IP 地址。我可以这样做吗?

我尝试查看 DbConnection 和 DbContext 的属性,但没有看到任何有用的东西。是否可以向下转换为 SqlConnection 以获取此信息?正确的方法是什么?

Azure 实体框架核心

评论

0赞 Poul Bak 11/16/2023
我假设它只是使用从服务器名称中查找 DNS。但是,这可能指向具有多个 IP 地址的服务器场。
0赞 nitzanms 11/16/2023
是的,我正在调试一个问题,我认为两个请求将发送到不同的服务器。

答:

0赞 Svyatoslav Danyliv 11/16/2023 #1

您可以使用扩展方法GetConnectionString()

var connectionString = context.Database.GetConnectionString();

或者,您可以访问 DbConnection:

var dbConnection = context.Database.GetDbConnection();  

如果 SQL Server 处于平衡器之下,为了获取 IP 攻击,您应该在打开的连接上执行 SQL 查询,如此处所述

评论

0赞 Svyatoslav Danyliv 11/16/2023
@PoulBak,你是对的,添加了这部分。
0赞 nitzanms 11/16/2023
所以我在这里的理解是,我只能通过SQL语句获取IP地址,而不能通过DbConnection?
1赞 Svyatoslav Danyliv 11/16/2023
尝试深入研究 SqlClient 源代码,然后深入研究私有属性,但没有运气。无法访问从中创建 TCP 套接字检索并用于创建的 IP 地址。Dns.GetHostEntry