Промежуточное ПО .NETCORE Считывает значение Body из POST, введенного пользователем в Postman, и проверяет определенное значение (To :) перед отправкой. - PullRequest
0 голосов
/ 07 марта 2020

Я использую приложение. NET CORE API с Промежуточным программным обеспечением , но мне нужно, чтобы Почта прочитала отдельные значения из Тела в Почтальоне И у меня было Промежуточное программное обеспечение Проверьте определенное значение в теле , например, (To :) сообщения электронной почты; и, если он удовлетворяет любым критериям, которые я хотел бы (POST) отправить электронное письмо предполагаемому получателю (Кому :) без базы данных .

Это как выглядит мой код до сих пор

using (StreamReader streamReader = new StreamReader(httpContext.Request.Body, encoding: Encoding.UTF8, detectEncodingFromByteOrderMarks: false, bufferSize: bufferSize, leaveOpen: true))
        {
            await streamReader.ReadToEndAsync();
            //Do something



            ////From test
            if (evaluate.IsSenderFromConfiguration() == true)
              {
                 message.From = From;

              }

             message.To = new List<MailboxAddress> { new MailboxAddress("mail@mail.com")};
             message.Subject = "Message From  Create Middleware";
             message.HtmlBody = "This is just a test of Middleware  ";
             await SendEmailAsync(message);

            httpContext.Request.Body.Position = 0;
        }
        await httpContext.Response.WriteAsync(body);
        await _next.Invoke(httpContext);

    }

Вот сообщение от контроллера

[HttpPost]
    public IActionResult Post([FromBody] Email email)
    {
        var message = new Email(_message.From, _message.To, _message.Subject, _message.HtmlBody);

        if (message == null)
        {
            return NotFound();
        }

        return Ok(message);
    }

Прямо сейчас у меня есть только то, что я сделал в Get, чтобы отправить электронное письмо. Как я могу получить его там, где в свойствах message.To , message.From, et c. может быть установлен пользователем / Я в Почтальоне, и если значение в сообщении. Для того, чтобы быть действительным, отправьте письмо?

Я думаю, что есть способ использовать httpContext.Request.Body как-то, но я не не знаю как. NET Ядро для установки каждого отдельного значения отдельно от класса Middleware.

Для пояснения: My Post Controller НЕ РАБОТАЕТ ДЛЯ ВАЛИДАЦИИ ФОРМ Middleware должен выполнять работу, а затем передавать ее к контроллеру после проверки. Вот где мне нужна помощь для класса Middleware.

1 Ответ

0 голосов
/ 07 марта 2020

использовать FluentValidation

также использовать в промежуточном программном обеспечении, как показано ниже:

services.AddMvc(setup => {
      //...mvc setup...
    }).AddFluentValidation();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...