ASP.NET Core Razor Pages 注入IWebHostEnvironment后控制台无输出问题咨询
问题分析
你的代码本身没有错误,IWebHostEnvironment的注入方式、路径拼接逻辑都是符合ASP.NET Core开发规范的。
控制台没有输出属于触发或配置层面的问题,常见原因如下:
- 你没有触发
OnGet方法执行:OnGet只有在浏览器访问对应Index页面的GET请求时才会运行,应用启动后默认不会自动执行该方法,你需要手动访问对应页面才会触发打印逻辑。 - 启动项配置问题:如果你是用IIS/IIS Express模式启动项目,默认不会弹出控制台窗口,你可以在VS的启动下拉选项中切换为以你的项目名命名的启动项(控制台模式启动),或者在VS的输出窗口顶部的下拉菜单中选择「ASP.NET Core Web Server」作为输出源,即可看到打印内容。
- 极少数情况是控制台输出被日志配置屏蔽,你可以改用
ILogger来输出日志,兼容性更强,示例如下:
public class IndexModel : PageModel { private readonly Microsoft.AspNetCore.Hosting.IWebHostEnvironment _webHostEnvironment; private readonly ILogger<IndexModel> _logger; public IndexModel(Microsoft.AspNetCore.Hosting.IWebHostEnvironment webHostEnvironment, ILogger<IndexModel> logger) { _webHostEnvironment = webHostEnvironment; _logger = logger; } public void OnGet() { string reportPath = System.IO.Path.Combine(_webHostEnvironment.ContentRootPath, "Reports", "TestReport.repx"); _logger.LogInformation("CONTENTRootPath: {path}", _webHostEnvironment.ContentRootPath); _logger.LogInformation("WEBRootPath: {path}", _webHostEnvironment.WebRootPath); _logger.LogInformation("ReportPath: {path}", reportPath); } }
你将Reports文件夹放在解决方案根目录的设计是合理的,用ContentRootPath拼接可以正确访问到该路径,只需要注意部署时要把该文件夹一起发布到服务器即可。
内容的提问来源于stack exchange,提问作者SoftwareDveloper
相关产品推荐
相关产品推荐

