ASP Core 2在IIS及VS2017中无法显示控制台日志的问题求助
解决ASP.NET Core 2部署在IIS上无法显示控制台窗口的问题
首先得明确一个核心点:当你把ASP.NET Core应用部署在IIS上时,应用是作为IIS托管的后台进程运行的(比如w3wp.exe或者对应的ASP.NET Core托管进程),这种运行模式下系统不会弹出控制台窗口——这是IIS的运行机制决定的,和你把项目属性设为Console Application无关。
不过别担心,我们可以根据你的需求(保持浏览器连接+查看实时日志),用以下几种方式解决:
1. 开发阶段切换到Kestrel自托管模式(直接弹出控制台)
如果只是开发时需要控制台窗口看日志,完全可以不用IIS,直接用Kestrel运行应用:
- 在Visual Studio 2017的启动目标下拉菜单里,把
IIS Express改成你的项目名称 - 启动项目后,控制台窗口会自动弹出,你的日志会直接输出在这里,同时浏览器依然可以正常访问应用(默认地址通常是
http://localhost:5000)
记得确保你在BuildWebHost里已经配置了控制台日志提供者,代码示例如下:
public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureLogging(logging => { logging.ClearProviders(); logging.AddConsole(); // 必须添加这个才能输出到控制台 logging.AddDebug(); // 同时保留VS输出窗口的日志 }) .UseStartup<Startup>() .Build();
2. IIS部署环境下的实时日志替代方案
如果必须部署在IIS上,没法用控制台窗口,你可以用这些方式实时查看日志:
- VS输出窗口:你已经熟悉这个方法,调试时可以附加到IIS的
w3wp.exe进程,日志会实时输出到VS的输出窗口里 - NLog实时日志查看:你已经能用NLog写入日志文件,可以用支持实时刷新的文本编辑器(比如Notepad++,开启「监视文件变化」功能)打开日志文件,就能实时看到新的日志内容;也可以用专门的NLog查看工具来监控日志
- Windows事件查看器:在NLog配置里添加一个
EventLog目标,把日志输出到Windows事件查看器里,这样就能通过系统自带的工具查看日志了
补充说明
即使你在项目里配置了控制台日志,在IIS环境下这些输出也不会显示成窗口——因为IIS托管的进程没有控制台会话,输出要么被重定向到系统日志,要么直接被丢弃。所以别纠结在IIS上弹出控制台窗口了,用上面的替代方案完全能满足你的日志查看需求。
内容的提问来源于stack exchange,提问作者alelom




