C# 我的电子邮件模板似乎为空。-提供RenderToStringAsync上的错误

C# 我的电子邮件模板似乎为空。-提供RenderToStringAsync上的错误,c#,asp.net-core-2.0,C#,Asp.net Core 2.0,每次,就像试图发送电子邮件一样,我都不会被发送,但它会说: 处理请求时发生未处理的异常。 ArgumentNullException:值不能为null。参数名称: 模板/NewPassword与任何可用视图都不匹配 这就是我试图在这里寻找的方式。- 请在此处输入代码: var resultMail = await _viewRenderService.RenderToStringAsync("Templates/NewPassword", viewModel); //ERROR HERE!

每次,就像试图发送电子邮件一样,我都不会被发送,但它会说:


处理请求时发生未处理的异常。 ArgumentNullException:值不能为null。参数名称: 模板/NewPassword与任何可用视图都不匹配

这就是我试图在这里寻找的方式。-

请在此处输入代码:

var resultMail = await _viewRenderService.RenderToStringAsync("Templates/NewPassword", viewModel); //ERROR HERE!

var client = new SendGridClient(m.azureName());
var from = new EmailAddress(m.mailFrom(), m.nameFrom());
var to = new EmailAddress(mail, UserValue.Navn);
var plainTextContent = Regex.Replace(resultMail, "<[^>]*>", "");
var msg = MailHelper.CreateSingleEmail(from, to, title, plainTextContent: plainTextContent,
                        htmlContent: null);
var resulta = client.SendEmailAsync(msg);

return RedirectToAction("UserPassword");
var resultMail=wait _viewRenderService.RenderToStringAsync(“模板/NewPassword”,viewModel)//这里出错了!
var client=new SendGridClient(m.azureName());
var-from=新的电子邮件地址(m.mailFrom(),m.nameFrom());
var to=新的电子邮件地址(mail,UserValue.Navn);
var plainTextContent=Regex.Replace(结果邮件,]*>,“”);
var msg=MailHelper.CreateSingleEmail(发件人、收件人、标题、明文内容:明文内容、,
htmlContent:null);
var resulta=client.sendmailasync(msg);
返回重定向操作(“用户密码”);
RenderToStringAsync代码在这里-我写了一个错误,在这里错误出现了

 public async Task<string> RenderToStringAsync(string viewName, object model)
    {
        var httpContext = new DefaultHttpContext { RequestServices = _serviceProvider };
        var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor());

        using (var sw = new StringWriter())
        {
            var viewResult = _razorViewEngine.FindView(actionContext, viewName, false);//ERROR HERE

            if (viewResult.View == null)
            {
                throw new ArgumentNullException($"{viewName} does not match any available view");
            }

            var viewDictionary = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary())
            {
                Model = model
            };

            var viewContext = new ViewContext(actionContext, viewResult.View, viewDictionary, new TempDataDictionary(actionContext.HttpContext, _tempDataProvider),
                sw,
                new HtmlHelperOptions()
            );

            await viewResult.View.RenderAsync(viewContext);
            return sw.ToString();
        }
    }
公共异步任务RenderToStringAsync(字符串视图名称,对象模型) { var httpContext=newdefaulthttpcontext{RequestServices=\u serviceProvider}; var actionContext=new actionContext(httpContext,new RouteData(),new ActionDescriptor()); 使用(var sw=new StringWriter()) { var viewResult=_razorViewEngine.FindView(actionContext,viewName,false);//此处出错 if(viewResult.View==null) { 抛出新ArgumentNullException($“{viewName}与任何可用视图都不匹配”); } var viewDictionary=new ViewDataDictionary(new EmptyModelMetadataProvider(),new ModelStateDictionary()) { 模型 }; var viewContext=newviewcontext(actionContext、viewResult.View、viewDictionary、newtempdatadictionary(actionContext.HttpContext、_tempDataProvider), 西南, 新的HtmlHelpOptions() ); 等待viewResult.View.RenderAsync(viewContext); 返回sw.ToString(); } }
您的
IViewRenderService.RenderToStringAsync()实现如何查找视图?如果您使用的是
IRazorViewEngine
ViewName
必须是完全限定的,包括文件扩展名ex
“~/Views/Home/Index.cshtml”

尝试使用
~/Views/Templates/NewPassword
检查samme问题@Jaxedin?那么就没有错误了,但是如果是我的邮件,问题就这么多了xxx@xxxx.com或者,如果应该是smtp.sendgrid.NetApp,则在处理请求时发生未经处理的异常。ArgumentNullException:值不能为null。参数名称:~/Views/Templates/NewPassword与任何可用视图不匹配相同错误是否在路径末尾包含
.cshtml
?或者您的文件实际上只是命名为
NewPassword
,没有任何扩展名?我假设您使用的字符串应该是
“~/Views/Templates/NewPassword.cshtml”
刚刚注意到您的
RenderToStringAsync()
函数依赖于
\u razorViewEngine.FindView()
,我的使用
\u razorViewEngine.GetView()
尝试将
视图结果替换为
\u razorViewEngine.GetView(““,viewName,false)那么就没有错误了,但是如果是我的邮件,问题就来自电子邮件xxx@xxxx.com或者它是否应该是smtp.sendgrid.net@NeilIs
RenderToStringAsync()
现在工作正常?如果是,请将此问题标记为已回答,并打开一个新问题,详细说明新问题是什么