Serilog WCF 在没有构造函数的情况下使用?

2024-01-06

我是 C# 新手,我正在尝试在 WCF 应用程序中使用 serilog。此 WCF 应用程序托管在 IIS 6.0 上。

我只需要在服务初始化时创建一次记录器。然而WCF似乎没有构造函数。如何仅创建下面的记录器一次并将其可供应用程序的其余部分使用。任何代码示例将不胜感激。

ILogger logger = new LoggerConfiguration()
                      .ReadAppSettings()
                      .CreateLogger();
              Log.Logger = logger;

我想过使用 App_Code 文件夹中的 AppInitialize 但我似乎无法让程序触发 AppInitialize 方法。

public class InitializeApp
{
    public static void AppInitialize()
    {
       
ILogger logger = new LoggerConfiguration()
                      .ReadAppSettings()
                      .CreateLogger();
              Log.Logger = logger;
    } 
}

当我在 Visual Studio 2019 中运行该项目时,AppInitialize 永远不会受到影响。


首先,您可以通过一些支持 WCF 服务的依赖注入库来使用 WCF 服务进行构造函数

您可以使用AutoFac.WCF https://autofac.readthedocs.io/en/latest/integration/wcf.html#services然后你可以通过以下方式注册 ILogger 类型Autofac https://autofac.org

builder.Register<ILogger>((c, p) =>
{
    return new LoggerConfiguration()
                 .ReadAppSettings()
                 .CreateLogger();
}).SingleInstance();

二、关于应用程序的“InitializeApp”。有几种方法可以做到这一点。

  1. Add 全局.asax文件,然后你可以将代码写入应用程序_启动
  2. Use 欧文中间件 https://learn.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-startup-class-detection编写自己的管道。您可以在 Startup.cs 中编写代码
  3. Use 网络激活器 https://github.com/davidebbo/WebActivator, 你可以写预申请启动方法 and 应用程序启动后方法(Global.asax 的扩展名)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Serilog WCF 在没有构造函数的情况下使用? 的相关文章

随机推荐