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