【问题标题】:AWS .NET SDK SimpleEmail SendEmail returning 'Could not load type' errorAWS .NET SDK SimpleEmail SendEmail 返回“无法加载类型”错误
【发布时间】:2021-02-23 22:41:38
【问题描述】:

我正在使用 AWS SimpleEmail 开发一个应用程序。当我尝试测试 SendEmail 功能时,出现以下错误。

无法从 程序集'AWSSDK.Core,版本=3.3.0.0,文化=中性, PublicKeyToken=885c28607f98e604'。

我已安装 AWSSDK.Core v3.3.31.7 和 AWSSDK.SimpleEmail v3.3.7.30。

var credentials = new BasicAWSCredentials("key", "secret");

var client = new Amazon.SimpleEmail.AmazonSimpleEmailServiceClient(credentials, Amazon.RegionEndpoint.EUWest1);

var sesResponse = client.SendEmail(new SendEmailRequest
{
    Destination = new Destination
    {
        BccAddresses = new List<string>
        {

        },
        ToAddresses = new List<string> {
            "user@cuchuma.net",
            "user2@cuchuma.net"
        }
    },
    Message = new Message
    {
        Body = new Body
        {
            Html = new Content
            {
                Charset = "UTF-8",
                Data = "This message body contains HTML formatting. It can, for example, contain links like this one: <a class=\"ulink\" href = \"http://docs.aws.amazon.com/ses/latest/DeveloperGuide\" target = \"_blank\"> Amazon SES Developer Guide </a>."
            },
            Text = new Content
            {
                Charset = "UTF-8",
                Data = "This is the message body in text format."
            }
        },
        Subject = new Content
        {
            Charset = "UTF-8",
            Data = "Test email"
        }
    },
    ReplyToAddresses = new List<string>
    {

    },
    ReturnPath = "",
    ReturnPathArn = "",
    Source = "no-reply@cuchuma.net",
    SourceArn = ""
});

string messageId = sesResponse.MessageId;

【问题讨论】:

  • 您的项目内置的 .net 版本是什么?
  • .NET Framework 4.5

标签: c# .net amazon-web-services aws-sdk


【解决方案1】:

无法加载的类只添加了2 months ago。所以我怀疑你的 AWSSDK.Core 版本比你说的要旧(v3.3.31.7)。

现在我不确定这是怎么发生的,但我在过去看到过 Nuget 被搞砸的情况,在项目文件中手动输入会导致加载不正确的 dll。

在记事本中打开您的项目文件并查找 SDK 参考。它们应该如下所示:

<Reference Include="AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604, processorArchitecture=MSIL">
      <HintPath>..\packages\AWSSDK.Core.3.3.31.7\lib\net45\AWSSDK.Core.dll</HintPath>
</Reference>
<Reference Include="AWSSDK.SimpleEmail, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604, processorArchitecture=MSIL">
      <HintPath>..\packages\AWSSDK.SimpleEmail.3.3.7.30\lib\net45\AWSSDK.SimpleEmail.dll</HintPath>
</Reference>

检查包名确实是 AWSSDK.Core.3.3.31.7 和 AWSSDK.SimpleEmail.3.3.7.30。

还要检查是否没有其他随机 AWSSDK.Core 条目。

最后...您可能会遇到的另一个问题,如果您不指定它们,则不要在以下行中包含空白字符串。它会抛出一个无效的电子邮件地址错误:

ReturnPath = "",
ReturnPathArn = "",
SourceArn = ""

【讨论】:

    【解决方案2】:

    @Martin Beeby 答案的变体。

    使用fuslogvw 工具,我看到在尝试加载本地副本之前加载了 GAC 版本的 AWSSDK.Core。我的 GAC 有一个过时版本的 AWSSDK.Core 程序集,更糟糕的是,我无法安全地卸载它,因为存在依赖项。最终的工作是:我导航到我的项目中的本地副本(类似于&lt;solution folder&gt;/packages/AWSSDK.Core.3.5.3.1/)并使用提升的 PowerShell 提示符发出:

    &amp;"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools\gacutil.exe" /i .\AWSSDK.Core.dll

    以便安装较新的版本,并且错误消失了。

    注意:gacutil 可能位于不同的路径中,它甚至可能位于 path 环境变量中,因此您不需要路径。

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2010-11-10
      • 2020-09-05
      相关资源
      最近更新 更多