Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

MissingMethodException: No parameterless constructor defined for type

$
0
0

I have a Blazor app using .net core 5. I am trying to run a page to trigger an email send (EmailSample) which works fine until I try to add a constructor injection for logging errors. as soon as I add the constructor injection and rerun the page I get a No parameterless constructor defined for type error. Am I not using this correctly? How to fix so I don't get that error. I could get around this if I could figure out how to add logger as a service in Startup.cs/ConfigureServices/services.AddSingleton< ??? >and then just do the [Inject] in the EmailSample class but can't figure out how.

[Inject]public ILogger _logger { get; set; }

The code that causes the error is... (Note: set up as a partial class, not in the .razor page @code{})

public partial class EmailSample{    private readonly ILogger<EmailSample> _logger;    public EmailSample (ILogger<EmailSample> logger)    {        _logger = logger;    }[Inject]    public IMailService _mailService { get; set; }    public void SendEmail()    {        string emailTo = "test@test.com";        string emailFrom = "noreply@test.com";        string emailSubject = "This is a test email.";        string emailType = "html";                 string emailCc = string.Empty;        System.Text.StringBuilder sb = new System.Text.StringBuilder();        sb.AppendLine("Hello" +" " + emailTo);        sb.AppendLine("</br>");        sb.AppendLine("This is a test of the email functionality");        sb.AppendLine("</br>");        sb.AppendLine("Best Regards,");        sb.AppendLine("</br>");        sb.AppendLine("Signature");        string emailBody = sb.ToString();        try        {            throw new Exception("This is an email sample exception test");            //Task tSendEmail = _mailService.SendEmailAsync(emailTo, emailSubject, emailBody, emailFrom, emailCc, emailType);            //if (tSendEmail.IsCompletedSuccessfully)            //{            //    _statusMessage = "The email has been sent successfully.";            //}            //else            //{            //    _statusMessage = "Failed to send email successfully.";            //}        }        catch (Exception ex)        {            _logger.LogError(ex, "The email for { emailto } failed to send.", emailTo);        }    }    public void OnGet()    {        _statusMessage = "";    }}

Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>