You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动