C# Надстройка Excel добавляет косые черты к закодированному URL - PullRequest
0 голосов
/ 28 апреля 2020

Я пишу надстройку Excel, которая будет вызывать API. Он обращается к ресурсам на основе пути к папке Microsoft, который кодируется по URL:

        var client = new HttpClient()
        {
            BaseAddress = new Uri("https://myHostName/api")
        };

        var folderPathEncode = HttpUtility.UrlEncode("C:\Folder1\Folder2", Encoding.Default);
        var resource = $"api/FileImport/GetFilesFromFolder/{folderPathEncode}";
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        var response = client.GetAsync(resource).Result;

        if (!response.IsSuccessStatusCode)
        {
            return new FileUploadMetadata[0];
        }

Когда я вызываю этот код из консольного приложения, URL-адрес корректно кодируется, и запрос http отправляется следующим образом:

https://myHostName/api/FileImport/GetFilesFromFolder/C:% 5CFolder1% 5CFolder2

Этот запрос успешно достигает моего API, закодированный путь к папке правильно декодирован, и API возвращает правильный результат.

Однако, когда я вызываю точно такой же код из Excel через c# addin (ту же библиотеку), отправляется закодированный запрос url, но он изменяется на следующий, когда httpClient делает запрос:

https://myHostName/api/FileImport/GetFilesFromFolder/C: / Folder1 / Folder2

Я понятия не имею, почему это происходит, поскольку кажется, что это происходит только при вызове кода из Excel Кто-нибудь знает, есть ли в Excel какая-либо функциональная возможность, которая перехватывает исходящие http-запросы и меняет кодировку, возможно, в качестве меры безопасности?

Я знаю, что мог бы включить ресурс в полезную нагрузку запроса, а не в URL-адрес, но я в идеале предпочел бы не.

Заранее спасибо

...