【发布时间】:2019-01-11 00:57:30
【问题描述】:
我有 sendemail 控制器
这是接口代码
public interface IEmailService
{
Task SendEmail(string email, string subject, string message);
}
这里是 API 控制器
[Route("api/send-email")]
[ApiController]
public class EmailController : ControllerBase
{
private readonly IEmailService _emailService;
public EmailController(IEmailService emailService)
{
_emailService = emailService;
}
[HttpPost]
public async Task<IActionResult> SendEmailAsync(string email, string subject, string message)
{
await _emailService.SendEmail(email, subject, message);
return Ok();
}
}
这是 SendEmail 类的代码
public class EmailService: IEmailService
{
private readonly IConfiguration _configuration;
public EmailService(IConfiguration configuration)
{
_configuration = configuration;
}
public async Task SendEmail(string email, string subject, string message)
{
using (var client = new SmtpClient())
{
var credential = new NetworkCredential
{
UserName = _configuration["Email:Email"],
Password = _configuration["Email:Password"]
};
client.Credentials = credential;
client.Host = _configuration["Email:Host"];
client.Port = int.Parse(_configuration["Email:Port"]);
client.EnableSsl = true;
using (var emailMessage = new MailMessage())
{
emailMessage.To.Add(new MailAddress(email));
emailMessage.From = new MailAddress(_configuration["Email:Email"]);
emailMessage.Subject = subject;
emailMessage.Body = message;
client.Send(emailMessage);
}
}
await Task.CompletedTask;
}
}
我尝试通过邮递员检查发布请求并将这个 json 发送到这个 url - https://localhost:5001/api/send-email
{ “电子邮件”:“suhomlin.eugene93@gmail.com”, “主题”:“获取药物”, “消息”:空 }
但我收到错误消息,该电子邮件为空。 这是错误屏幕
我不明白,为什么?我的错在哪里?
【问题讨论】:
-
你能发布你得到的确切错误和 HTTP 状态代码吗?
-
我更新了我的帖子。 500个http代码。 @IlyaChernomordik
-
大部分是你从 Postman 调用控制器的方式有误,用 json 数据发布准确的 url,因此无法绑定
-
我更新了我的帖子@MrinalKamboj
-
你是否将Json数据作为Body传递,那么这需要[FromBody]属性才能正确绑定
标签: c# asp.net-web-api asp.net-core asp.net-core-mvc