-2

我是 C# 的菜鸟,并尝试将自动邮件服务添加到我的后端 API 中以用于 Angular 前端。它一次可以按预期正常工作,但不能再次使用。我想我违反了一些对象规则,也许有人能够指出我的错误。

这是我的文件 UserAuthController.cs 的摘录,其中包括注册功能。在我的网站上注册成功后,它还将从我的自动邮件系统调用 API 服务。我不知道如何正确包含该函数,所以我添加了一个新的命名空间。

namespace Gogo_Api.Controllers
{
    [RoutePrefix("UserAuth")]
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class UserAuthController : ApiController
    {
        private readonly IUserAuthManager _userAuthManager;

        public UserAuthController()
        {

        }
        public UserAuthController(IUserAuthManager userAuthManager)
        {
            this._userAuthManager = userAuthManager;
        }

        [HttpPost]
        [Route("Register")]
        public HttpResponseMessage Register(UserDetails user)
        {
            var response = new RegisterResponse();
            response.code = _userAuthManager.Register(user);
            if (response.code == 1)
            {
                response.message = "Registration successful ";

                //Including API Service here...
                Sendinblue.Program RegisterMail = new Sendinblue.Program();
                RegisterMail.Main(user.email, user.displayName, user.country);
                RegisterMail = null;
               
            }
            else if (response.code == 2)
            {
                response.message = "User already registered ";
            }
            else if (response.code == 0)
            {
                response.message = "Error occured";
            }
            return Request.CreateResponse(HttpStatusCode.OK, response);
        }

    }
}



namespace Sendinblue
{
    class Program
    {
        public void Main(string userMail, string userName, string userCountry)
        {
            Configuration.Default.ApiKey.Add("api-key", "MYKEY");

            var apiInstance = new ContactsApi();
            string email = userMail;
            JObject attributes = new JObject();
            attributes.Add("USERNAME", userName);
            attributes.Add("COUNTRY", userCountry);
            List<long?> listIds = new List<long?>();
            listIds.Add(5);
            try
            {
                var createContact = new CreateContact(email, attributes, emailBlacklisted, smsBlacklisted, listIds, updateEnabled, smtpBlacklistSender);
                CreateUpdateContactModel result = apiInstance.CreateContact(createContact);
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
                Console.WriteLine(e.Message);
            }
        }


    }
}

我添加了“RegisterMail = null;” 因为我认为我需要先删除我的对象才能再次使用它,但它仍然只能在第一次使用。我怎样才能多次调用我的函数?

谢谢

4

1 回答 1

0

感谢@Richard Barker,您的评论帮助我解决了这个问题。我已将所有内容移出 Controller 并且不得不移动

Configuration.Default.ApiKey.Add...
apiInstance = new ContactsApi();

到 Initializer 中的一次性调用,因此 API 调用和 ContactsApi 只创建一次,而不是每次创建。

于 2021-06-06T09:52:14.590 回答