我正在使用ASP.Net身份和我的Web Api項目AccountController
我想發送驗證郵件給新用戶。我已經使用MVCMailer將我的電子郵件服務插入ASP.Net身份。使用MVCMailer與ASP.Net Web Api
public class EmailService : IIdentityMessageService
{
private readonly IUserMailer _userMailer;
public EmailService(IUserMailer userMailer)
{
_userMailer = userMailer;
}
public Task SendAsync(IdentityMessage message)
{
_userMailer.DeliverMessage(message.Body);
// Plug in your email service here to send an email.
return Task.FromResult(0);
}
}
#
public class UserMailer : MailerBase, IUserMailer
{
public UserMailer()
{
MasterName = "_Layout";
}
public virtual IMailMessage DeliverMessage(string message)
{
var mailMessage = new MailMessage();
mailMessage.To.Add("[email protected]");
mailMessage.Subject = "Welcome";
//ViewData = new System.Web.Mvc.ViewDataDictionary(model);
PopulateBody(mailMessage, "Welcome");
mailMessage.Send();
return mailMessage;
}
我自定義的ASP.Net Identiy是在一個單獨的項目。正如你上面看到的EmailService依賴於IUserMailer
接口。和IUserMailer
實現是另一個項目MyProject.MVCMailer
(此項目是一個MVC項目)
我嘗試解決這種依賴 container.Bind<IUserMailer>().To<UserMailer>().InSingletonScope();
但MVCMailer
有一個依賴於System.Web.MVC
和ninject抱怨的此參考初始化爲USerMailer
。
所以問題是在這裏我不想將System.Web.MVC
添加到我的Web Api項目。
如何使用MVCMailer,而無需在我的web api項目中引用System.Web.MVC
?
謝謝你的回答。 api消費者是一款iOS應用。用戶只需從iOS應用程序註冊。成功註冊後,「_AppUserManager」是「ASP.Net Identity UserManager」的子類,嘗試發送電子郵件。 'AppUserManager'在一個單獨的類中。在那個單獨的類中,我有一個名爲'EmailService'的類,它需要一個IUserMailer實例來發送郵件。 IUserMailer實現在另一個名爲'MyApp.MVCMailer'的項目中,該項目是一個MVC項目。我的依賴注入駐留在MyApp.Web.API項目中。依賴注入器需要知道有關System.Web.MVC來創建IUserMailer。 –
所有的事情我做我來到這裏添加一個引用System.Web.MVC到我的Web.Api項目。你可以創建一個MVCMailer發送郵件的示例web api嗎? –