Asp.net mvc ";使用“发送”;配置值无效

Asp.net mvc ";使用“发送”;配置值无效,asp.net-mvc,iis,smtp,Asp.net Mvc,Iis,Smtp,我继承了一个.NET 3.5 MVC(看起来像MVC版本1)站点,并将其迁移到另一台服务器。我安装了SMTP功能(IIS 7),并在IIS 6中启动了虚拟服务器。在IIS7中,我确保SMTP电子邮件设置发送到本地主机,并检查防火墙上的端口。仍然收到这个消息。因为我以前从未使用过MVC,所以我找不到应该发送此邮件的代码。我不知道去哪里找 感谢您的帮助,谢谢 HttpException (0x80004005): The "SendUsing" configuration value is inva

我继承了一个.NET 3.5 MVC(看起来像MVC版本1)站点,并将其迁移到另一台服务器。我安装了SMTP功能(IIS 7),并在IIS 6中启动了虚拟服务器。在IIS7中,我确保SMTP电子邮件设置发送到本地主机,并检查防火墙上的端口。仍然收到这个消息。因为我以前从未使用过MVC,所以我找不到应该发送此邮件的代码。我不知道去哪里找

感谢您的帮助,谢谢

HttpException (0x80004005): The "SendUsing" configuration value is invalid.
]
   System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args) +99
   System.Web.Mail.CdoSysHelper.Send(MailMessage message) +1738
   System.Web.Mail.SmtpMail.Send(MailMessage message) +273
   IPS.Controllers.AccountController.OnAfterResetPassword(String email, String userName, String newPassword) in B:\IPS\Controllers\AccountController.cs:207
   IPS.Controllers.AccountController.ForgotPassword(String userName) in B:\IPS\Controllers\AccountController.cs:192
   lambda_method(ExecutionScope , ControllerBase , Object[] ) +85
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +178
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +24
   System.Web.Mvc.<>c__DisplayClassa.<InvokeActionMethodWithFilters>b__7() +53
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +258
   System.Web.Mvc.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9() +20
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +193
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +382
   System.Web.Mvc.Controller.ExecuteCore() +123
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +23
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7
   System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) +144
   System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) +54
   System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +7
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
我把它改成:

[NonAction]
protected virtual void OnAfterResetPAssword(string email, string userName, string newPassword)
{
     System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
     mail.To.Add(email);
     mail.From = new System.Net.Mail.MailAddress("admin@thisserver.com");
     mail.Subject = "New Password";
     mail.Body = "Here is your new password";

     System.Net.Mail.SmtpMail.Send(mail).
}
和my web.config:

<system.net>
   <mailSettings>
      <smtp>
         <network host="<FULL HOST IP ADDRESS>" port="25" userName="" password="" />
      </smtp>
   </mailSettings>
</system.net>

使用这些更改运行站点会呈现完全相同的堆栈跟踪。。。甚至它说的部分

System.Web.Mail.LateBoundAccessHelper.CallMethod(对象obj,字符串methodName,对象[]args)+99
System.Web.Mail.CdoSysHelper.Send(邮件消息)+1738
System.Web.Mail.SmtpMail.Send(MailMessage)+273

它还写着System.Web.Mail,这不是很奇怪吗???我不确定MVC是如何工作的。我需要重新编译或类似的东西吗?我甚至用标准的telnet请求测试了端口25上的SMTP服务器,它工作正常


谢谢您的帮助。

看起来好像在帐户控制器中。FWIW,我认为System.Net.Smtp是现在做这件事的“正确”方式(我认为System.Web.Mail已被弃用)。您可能想查看codeplex上的电子邮件发件人项目,而且:,它使事情更简单。

您的
AccountController
中的
OnAfterResetPassword
方法/操作正在使用不推荐的
System.Web.Mail
命名空间。您无法将此配置为使用
system.net/mailSettings/smtp
web.config
文件中的邮件设置,就像您在
system.net.mail
中那样,它不知道这些设置

如果您有源代码,请更新为使用
System.Net.Mail


如果无法执行此操作,请检查以下各项:

  • System.Web.Mail
    SmtpMail.SmtpServer
    属性未设置,并且本地SMTP服务未运行
  • SmtpMail.SmtpServer
    属性已设置,但服务器无法访问SMTP服务器
  • 工作进程帐户(如果未使用模拟)可能没有访问SMTP服务的权限

我必须检查一下,看看是否有这方面的源代码。今晚回家后我会再看一遍,然后回来回应。你需要重建这个项目,但你走的是对的。
<system.net>
   <mailSettings>
      <smtp>
         <network host="<FULL HOST IP ADDRESS>" port="25" userName="" password="" />
      </smtp>
   </mailSettings>
</system.net>