为啥 System.Data.OleDb 代码会联系 Microsoft?

Posted

技术标签:

【中文标题】为啥 System.Data.OleDb 代码会联系 Microsoft?【英文标题】:Why is System.Data.OleDb code contacting Microsoft?为什么 System.Data.OleDb 代码会联系 Microsoft? 【发布时间】:2015-08-25 22:15:33 【问题描述】:

本周我在我的 PC 上注意到,与 LOCAL Access 数据库的 OleDBConnection 需要 2-4 秒才能关闭(取决于它是第一次调用 .Close() 还是后续调用)。上周这要快得多。

周末在我的机器上安装了 KB2952664。

以下代码触发到 odc.officeapps.live.com 的 HTTPS 隧道:

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim conn As OleDb.OleDbConnection
    Dim str As String

    str = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\temp\Northwind.accdb;"

    System.Diagnostics.Debug.Print(DateTime.Now.ToString("hh:mm:ss.fff tt"))
    conn = New OleDb.OleDbConnection(str)

    conn.Open()
    System.Diagnostics.Debug.Print(DateTime.Now.ToString("hh:mm:ss.fff tt"))
    conn.Close()
    System.Diagnostics.Debug.Print(DateTime.Now.ToString("hh:mm:ss.fff tt"))

End Sub

如何防止 .NET 在运行时与 MS 联系???

这是一个 Fiddler 屏幕截图,显示了它正在访问的 URL。 (省略我们的域名)我没有看到它发送到该 URL 的任何数据。

【问题讨论】:

嗯,首先,您需要准确确定导致它变慢的原因。是你的服务器吗?您能 100% 确定这是由于 Windows 更新造成的吗? 不是 100% 确定是 Windows 更新导致了这种情况,但这是我的猜测,因为它应该是周末唯一改变的事情。这是访问我的 c: 驱动器上的 LOCAL Access 数据库。不涉及服务器。 哦,哇。这很有趣..有没有你没有清理的资源?从那时到现在,您是否添加了任何代码? 查看我上面添加的示例代码。 .Open() 大约需要 1 秒,而 .Close 需要 2 秒。我们在应用中的每个查询后调用 .Close,所以 2 秒太长了。 如果使用 HTTPS 拦截,发送到该服务器的内容是什么? 【参考方案1】:

取消选中“访问选项”中的“允许 Office 连接到 Internet”可以防止这种情况发生。

这并不理想,因为如果我希望 Office 出于其他原因连接到 Internet,该怎么办?希望对此进行精细控制。

【讨论】:

以上是关于为啥 System.Data.OleDb 代码会联系 Microsoft?的主要内容,如果未能解决你的问题,请参考以下文章

显示来自“System.Data.OleDb.OleDbDataReader”的“字符串”。访问数据库到 C# 表单

OleDb 异常 System.Data.OleDb.OleDbException (0x80004005): 超出系统资源

System.Data.OleDb.OleDbException 无效参数

System.Data.OleDb.OleDbException 未处理:不是有效路径

System.Data.OleDb.OleDbException: 'UPDATE 语句中的语法错误。 '

System.Data.OleDb.OleDbException:超出系统资源