【发布时间】:2026-02-12 01:20:07
【问题描述】:
我有一台使用 AWS SES 发送通知电子邮件的服务器,但我不断收到以下消息:
“Amazon.Runtime.AmazonServiceException”类型的未处理异常 发生在 AWSSDK.dll 中
其他信息:找不到凭据
我有一个服务器用户可以完全访问的凭证文件,我使用以下内容告诉 AWS 开发工具包文件所在的位置和配置文件名称:
AWSConfigs.AWSProfileName = "example-user";
AWSConfigs.AWSProfilesLocation = Environment.CurrentDirectory + "/example-dir/credentials";
..但是在以下行崩溃并显示错误消息:
AmazonSimpleEmailServiceClient client = new AmazonSimpleEmailServiceClient(REGION);
我在Amazon.Runtime.AmazonServiceException: Unable to find credentials 上查看了this answer,这表明配置文件应该在应用程序的配置文件中,如下所示:
<appSettings>
<add key="AWSProfilesLocation" value="C:\awsfile\credentials" />
<add key="AWSRegion" value="us-east-1" />
</appSettings>
...这会导致完全相同的错误。
我做错了什么? AWSConfigs.* 代码已经运行了大约六个月没有问题,当我的项目中断并且我从它的 Git 存储库中恢复它时,这种情况就开始发生了。我不记得我以前使用的是哪个版本的 Visual Studio,但我目前使用的是 2015(更新 3)。
我确实但是通过将凭据添加为系统环境变量来使其工作,但这不是出于安全原因的永久解决方案。
如果我下载较早的提交,构建它们并运行它们,我会得到完全相同的错误。我认为这与我正在使用的 Visual Studio 版本有关,但想不出任何原因。
AWS SDK 和 .NET 版本一直是相同的,因此不应该不兼容(AWS SDK 为 2.3.55.2 和 .NET 4.6.1)。
【问题讨论】:
-
不应该
AWSProfilesLocation指向一个文件,而不是一个文件夹? -
马克关于位置是文件而不是文件夹的评论是正确的。如果这是 EC2 实例,还可以使用 IAM 角色作为凭证而不是应用程序硬编码。
-
您是在 Amazon EC2 实例还是本地服务器上运行代码?
-
@JohnRotenstein EC2,我承认我没有看过 IAM 角色,所以我打算研究一下。
-
@MarkB 道歉,当我更改示例代码的路径时错过了文件名。固定。