分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

ASP.NET Core 2.1 中 ViewResultExecutor 的变化

发布时间:2023-09-06 01:55责任编辑:董明明关键词:.NET

之前在 ASP.NET Core 2.0 中可以正常运行的代码:

var services = HttpContext.RequestServices;var executor = services.GetRequiredService<ViewResultExecutor>();var viewEngine = services.GetRequiredService<IRazorViewEngine>();var view = viewEngine.GetView(null, "~/Pages/IeAlert.cshtml", true)?.View;if (view != null){ ???using (view as IDisposable) ???{ ???????await executor.ExecuteAsync(ControllerContext, view, ViewData, TempData, "text/html; charset=utf-8", 200); ???} ???return new EmptyResult();} 

升级到 ASP.NET Core 2.1 之后出现下面的错误:

System.InvalidOperationException: No service for type ‘Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor‘ has been registered. ??at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) ??at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)

查看 ViewResultExecutor 的定义发现 ViewResultExecutor 实现了  IActionResultExecutor<ViewResult> 接口,查看最新的 ASP.NET Core MVC 的源代码发现这样的注册:

services.TryAddSingleton<IActionResultExecutor<ViewResult>, ViewResultExecutor>();

原来 ViewResultExecutor 也被抽象了,于是改为下面的代码解决了问题:

var services = HttpContext.RequestServices;var executor = services.GetRequiredService<IActionResultExecutor<ViewResult>>() as ViewResultExecutor ????? throw new ArgumentNullException("executor");var viewEngine = services.GetRequiredService<IRazorViewEngine>();var view = viewEngine.GetView(null, "~/Pages/IeAlert.cshtml", true)?.View;if (view != null){ ???using (view as IDisposable) ???{ ???????await executor.ExecuteAsync(ControllerContext, view, ViewData, TempData, "text/html; charset=utf-8", 200); ???} ???return new EmptyResult();}

ASP.NET Core 2.1 中 ViewResultExecutor 的变化

原文地址:https://www.cnblogs.com/dudu/p/9060857.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved