使用Asp.Net,很容易看到Razor View Engine生成的代码:添加编译错误,错误页面将提供对Razor页面源的访问.
解决方法
将以下类添加到ASP.NET Core MVC项目中:
using Microsoft.AspNetCore.Mvc.ApplicationParts; using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.AspNetCore.Mvc.Razor.Compilation; using Microsoft.AspNetCore.Mvc.Razor.Internal; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; public class CustomCompilationService : DefaultRoslynCompilationService,ICompilationService { public CustomCompilationService(ApplicationPartManager partManager,IOptions<RazorViewEngineOptions> optionsAccessor,IRazorViewEngineFileProviderAccessor fileProviderAccessor,ILoggerFactory loggerFactory) : base(partManager,optionsAccessor,fileProviderAccessor,loggerFactory) { } CompilationResult ICompilationService.Compile(RelativeFileInfo fileInfo,string compilationContent) { return base.Compile(fileInfo,compilationContent); } }
使用上面的类重写MVC添加的ICompilationService;
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddSingleton<ICompilationService,CustomCompilationService>(); }
在CustomCompilationService的Compile方法上设置断点并查看compilationContent.
笔记
查看查找区分大小写.如果您的控制器路由寻找名为Index(Index.cshtml)的视图但您已命名视图文件索引(index.cshtml),则会收到异常:
InvalidOperationException: The view ‘Index’ was not found.
原文地址:https://www.jb51.cc/netcore/247633.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。