程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在 Azure Functions 应用程序中作为单例的 STMP 客户端大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在 Azure Functions 应用程序中作为单例的 STMP 客户端?

开发过程中遇到在 Azure Functions 应用程序中作为单例的 STMP 客户端的问题如何解决?下面主要结合日常开发的经验,给出你关于在 Azure Functions 应用程序中作为单例的 STMP 客户端的解决方法建议,希望对你解决在 Azure Functions 应用程序中作为单例的 STMP 客户端有所启发或帮助;

我有一个 Azure Functions 应用程序,它使用 Amazon SES 服务发送电子邮件并处理发送消息操作,我创建了一个客户端并在我的 Azure 应用程序的 Startup.cs 中将其声明为单例。

看起来第一条消息发送正常,但随后的消息失败并显示以下错误:

无法访问已处置的对象。对象名称: 'System.Net.Mail.SmtpClIEnt'

这是我的客户端处理发送消息的样子:

using System;
using System.Net;
using System.Net.Mail;

public class SesClIEnt
{

    SmtpClIEnt _clIEnt;
    private String _senderEmail;

    public SesClIEnt(String smtpServer,int smtpPort,String amazonSesUserID,String amazonSespassword,String senderEmail)
    {
        if (_clIEnt == null)
        {
            _clIEnt = new SmtpClIEnt(smtpServer,smtpPort);
            _clIEnt.Credentials = new NetworkCredential(amazonSesUserID,amazonSespassword);
            _clIEnt.EnableSsl = true;
            _senderEmail = senderEmail;
        }
    }

    public voID SendEmailmessage(Mailmessage messagE)
    {
        message.From = new MailAddress(_senderEmail,"John Doe");

        using (_clIEnt)
        {
            try
            {
                _clIEnt.Send(messagE);
            }
            catch (Exception eX)
            {
                throw new Exception(ex.messagE);
            }
        }
    }
}

我在我的 Configureservices()Startup.cs 方法中将这个类创建为单例,如下所示:

var smtpServer = Configuration["AmazonSes:SMTP_SERVER"];
var smtpPort = Convert.ToInt32(Configuration["AmazonSes:SMTP_PORT"]);
var sesUserID = Configuration["AmazonSes:user_iD"];
var sespassword = Configuration["AmazonSes:USER_password"];
var senderEmail = Configuration["MyApp:EMAIL_ADDRESS"];

services.AddSingleton(new SesClIEnt(smtpServer,smtpPort,sesUserID,sespassword,senderEmail));

我认为将这个客户端创建为单例是正确的想法。这就是问题所在吗?如果没有,知道这里可能有什么问题吗?

解决方法

在您发布的代码中,using(_client) 在发送第一封电子邮件后有效地处理了 SmtpClient,因此“对象已处理”异常。由于它是一个单例,因此不会再次调用构造函数。

大佬总结

以上是大佬教程为你收集整理的在 Azure Functions 应用程序中作为单例的 STMP 客户端全部内容,希望文章能够帮你解决在 Azure Functions 应用程序中作为单例的 STMP 客户端所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。