Функция Microsoft.Office.Interop.Excel.Connections.Add2 (), не использующая TLS12 - PullRequest
0 голосов
/ 22 октября 2019

Я работаю над надстройкой Excel и пытаюсь подключить Excel к источнику OData с помощью C # и сборки Office.Interop. Код долго работал нормально, но недавно TLS1.0 был отключен на сервере Azure. После чего вызов ActiveWorkbook.Connections.Add2 () при ошибке с исключением

Основное соединение было закрыто: при отправке произошла непредвиденная ошибка. Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом. Существующее соединение было принудительно закрыто удаленным хостом

Я использую следующую строку подключения:

@"DATAFEED;Data Source={0};Namespaces to Include=*;Max Received Message Size=4398046511104;Integrated Security=Basic;User ID={1};Password={2};Persist Security Info=false;Base Url={3}"

Однако, если я пытаюсь получить данные, используя встроенные в OData данные Excelфункция (Data tab -> Get Data -> From Other Sources -> From OData Feed), данные заполняются правильно. Используя fiddler, я смог определить разницу между вызовами, сделанными с использованием Из функции OData Feed и теми, которые используют Connection.Add2 ()

Заголовкив Из OData Feed

Обнаружено совместимое с SSLv3 рукопожатие ClientHello. Fiddler извлек параметры, приведенные ниже.

Версия: 3.3 (TLS / 1.2)

Заголовки в Connection.Add2 ()

A SSLv3-совместимый ClientHelloрукопожатие было найдено. Fiddler извлек параметры, указанные ниже.

Версия: 3.1 (TLS / 1.0)

Разница в версии 3.3 (TLS / 1.2) и версии 3.1 (TLS / 1.0)

Мой вопрос: Как заставить Connection.Add2 () использовать версию 3.3?

Я уже пробовал

  1. Provider=Microsoft.Mashup.OleDb.1; в строке подключения
  2. Установка библиотеки VSTO 2010
  3. Изменение версии .NET Framework на 4.8

, но ни одна из них не работает.

...