短控制台应用程序可将 pdf 文件上传到 d365?

问题描述 投票:0回答:0

我编写了一个简单的控制台应用程序来读取文件并通过 api 将其上传到 d365。这些文件是 PDF。

当我使用文件流读取 pdf 文件时仍然出现错误:

ReadTimeout = 'filestream.ReadTimeout'
正在扔
'System.InvalidOperationException'

经过几个小时的研究,我不知道为什么我无法阅读PDF文件。

这是我的源代码:

using (var filestream = File.OpenRead($"C:\\test\\test.pdf"))
{
    var length = filestream.Length.ToString();
    var streamContent = new StreamContent(filestream);
    streamContent.Headers.Add("Content-Type", "application/octet-stream");
    streamContent.Headers.Add("Content-Length", length);

    var _application = ConfidentialClientApplicationBuilder
                           .Create(appid)
                           .WithClientSecret(clientsecret)
                           .WithAuthority(new Uri($"https://login.microsoftonline.com/aadid"))
                           .Build();

    var authResult = _application.AcquireTokenForClient(new[] { $"orgname.crm4.dynamics.com/.default" })
                                 .ExecuteAsync().ConfigureAwait(true);

    var temp = Task.Run(async () => { return await authResult; });
    temp.Wait();

    var token = temp.Result;

    using (var req = new HttpRequestMessage(new HttpMethod("PATCH"), url))
    {
        req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);
        req.Content = streamContent;
        //req.Content.Headers.Add("Content-Type", "application/octet-stream");
        req.Content.Headers.Add("x-ms-file-name", nameCleared + ".pdf");
        HttpClient Client = new HttpClient();

        using (var response = Client.SendAsync(req))
        {
            response.Wait();
            response.Result.EnsureSuccessStatusCode();
        }
    }
}
c# microsoft-dynamics
© www.soinside.com 2019 - 2024. All rights reserved.