You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core WebAPI部署IIS后Serilog无法生成日志文件

ASP.NET Core部署IIS后Serilog无法写日志的解决办法

本地Visual Studio运行时日志正常生成,但部署到IIS后日志无法写入,通常是以下几个原因导致,对应解决方案如下:

1. IIS应用池账户权限不足

这是最常见的问题,IIS应用池的运行账户没有日志文件夹的读写权限:

  • 找到站点部署后的根目录,手动创建logs文件夹(如果还没生成)
  • 右键logs文件夹 → 属性 → 安全 → 编辑 → 添加
  • 输入IIS AppPool\[你的应用池名称](比如你的应用池叫YeltApi,就填IIS AppPool\YeltApi),点击「检查名称」确认账户存在后添加
  • 给该账户分配写入、修改、读取和执行、列出文件夹内容、读取权限,保存设置

2. 相对路径导致日志路径错误

Serilog配置里的相对路径在IIS环境下可能指向非站点目录,需要改用绝对路径:
修改Program.cs中的Serilog配置代码:

builder.Host.UseSerilog((hostContext, services, configuration) => {
    configuration.WriteTo.Console();
    // 基于站点根目录生成日志绝对路径
    var logFilePath = Path.Combine(
        hostContext.HostingEnvironment.ContentRootPath, 
        "logs", 
        "Middletier-.log"
    );
    configuration.WriteTo.File(logFilePath, 
                               rollingInterval: RollingInterval.Day);
});

3. 未配置自动创建日志目录

如果logs文件夹不存在,Serilog默认不会自动创建目录,可添加参数开启自动创建:

configuration.WriteTo.File(logFilePath, 
                           rollingInterval: RollingInterval.Day,
                           createDirectory: true); // 开启自动创建目录

4. 检查IIS应用池配置

确保应用池的设置符合ASP.NET Core要求:

  • 应用池的「.NET CLR版本」设置为无托管代码
  • 「托管管道模式」设置为集成

内容的提问来源于stack exchange,提问作者Enrico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 15:06:07