我是C#中的一个彻底的noob,并试图将自动邮件服务添加到我的后端API中以实现Angular FrontEnd。它一次可以正常工作,但不能再次使用。我想我违反了一些对象规则,也许有人能指出我的错误。
这是我的文件UserAuthController.cs的摘录,其中包括register函数。当在我的网站上注册成功时,它还将从我的自动邮件系统调用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;"因为我想我需要先删除我的对象,然后再使用它,但它仍然只适用于第一次。我怎样才能多次调用我的函数?
感谢
谢谢@Richard Barker,你的评论帮助我解决了这个问题。我已经把所有东西都从控制器里移走了,不得不移动
Configuration.Default.ApiKey.Add...
apiInstance = new ContactsApi();
初始化器中的一次性调用,因此API调用和ContactsApi只创建一次,而不是每次。