c# - 在 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。
解决方案
您的 S3 配置似乎丢失了。您需要在可能映射到标头的 HttpClient 中包含您的 S3 配置。
GitHub#1014上有类似的问题,而这使用AmazonS3Client
.
推荐阅读
- angular - 我无法从文件输入 @angular/material 组件中获取文件名
- javascript - 在javascript中使用数组成功调用ajax后填充表
- bitcoin - Bitcoin-cli 钱包创建错误:找不到 rpc 凭据
- android - 如何将 androidx.compose.ui.graphics.Color 转换为 android.graphics.Color (int)
- python - Python - 尝试使用 PIL 的 Image.fromarray 保存 numpy 数组时出现 TypeError
- javascript - 无法读取未定义的属性“setVolume”
- c++ - Apache Ignite 中的缓冲区溢出
- python - ProcessPoolExecutor的map方法不使用CPU的多核
- python - 使用 Cox 比例风险进行点预测
- r - 是否有一个函数可以自动将我在 R 中的光标移动到我的代码中发现的错误?