Я пишу надстройку 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-адрес, но я в идеале предпочел бы не.
Заранее спасибо