首页 > 解决方案 > 在 ASP.NET Core 中下载远程 PDF 时未配置设备

问题描述

我正在尝试从远程 URL 下载 PDF,以便将其添加到邮件附件中。

我的应用程序是一个 .NET Core 2.1 API。该 URL 是 AWS Cloudfront 上的单页 PDF。

    try
    {
        using (var httpClient = new HttpClient())
        {
            string url = AttachmentPath + "/" + AttachmentFilename;
            byte[] bytes = await httpClient.GetByteArrayAsync(url);
            string fileContentsAsBase64 = Convert.ToBase64String(bytes);

            msg.AddAttachment(AttachmentFilename, fileContentsAsBase64, "application/pdf");
        }
    }
    catch (Exception ex)
    {

    }

我收到以下错误:

{System.Net.Sockets.SocketException (6):未在 System.Net.Http.ConnectHelper.ConnectAsync 配置设备(字符串主机,Int32 端口,CancellationToken 取消令牌)}

我究竟做错了什么?

更新

感谢下面共享的链接,我已将代码修改如下:

private static HttpClient httpClient = new HttpClient();

    try
    {
        string url = AttachmentPath + "/" + AttachmentFilename;
        // The following line causes the exception
        byte[] bytes = await httpClient.GetByteArrayAsync(url);
        string fileContentsAsBase64 = Convert.ToBase64String(bytes);

    }
    catch (Exception ex)
    {

    }

异常发生在等待 httpClient.GetByteArrayAsync。

标签: c#asp.net-coredotnet-httpclient

解决方案


您的 S3 配置似乎丢失了。您需要在可能映射到标头的 HttpClient 中包含您的 S3 配置。

GitHub#1014上有类似的问题,而这使用AmazonS3Client.


推荐阅读