• .Net Core IIS下无Log4Net日志输出,命令行下却有(dotnet运行)


    .Net Core IIS下无Log4Net日志输出,命令行下却有(dotnet运行)

    遇到个诡异的问题,项目发布并寄宿到 IIS上后,Log4Net没有日志输出

    1.原因分析

    这不应该啊,所有的配置都在.Net Core控制台做了测试

    因为控制台上会有输出信息,所以切到控制台下运行(dotnet *.dll),确实有特意抛出的异常信息,且文件夹会被创建并写入异常信息。但是IIS寄宿死活不出输出日志(这里应该怀疑时IIS的配置问题 orz)。

    百度无果,就Google,终于找到原因了

    其实:ASP.NET CoreInProcess & OutOfProcess两种托管模型

    在 IIS 工作进程 (w3wp.exe) 内托管 ASP.NET Core 应用,称为进程内托管模型。
    将 Web 请求转发到运行 Kestrel 服务器的后端 ASP.NET Core 应用,称为进程外托管模型。
    

    将IIS下的InProcess 托管模型切换成Kestrel下的OutOfProcess托管模型

    2. 解决办法

    直接修改项目文件(*.csproj)

    <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
        <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
     </PropertyGroup>
    

    修改发布后的web.config文件

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
        <system.webServer>
          <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
          </handlers>
          <aspNetCore processPath="dotnet" arguments=".RiChooseCourse.dll" stdoutLogEnabled="false" stdoutLogFile=".logsstdout" hostingModel="OutOfProcess" />
        </system.webServer>
      </location>
    </configuration>
    
  • 相关阅读:
    Java中的多线程
    Service组件
    Notification和Notification Manager的使用
    Java网络编程
    Intent组件
    Android 多任务多线程断点下载
    hdu 2045
    hdu 2492
    poj 2785
    湖南省第六届程序设计大赛D(台球碰撞)
  • 原文地址:https://www.cnblogs.com/liushen/p/Findout_Why_IIS_Has_Not_Log_But_Console_Has.html
Copyright © 2020-2023  润新知