我需要一些帮助来理解将aspnet核心webapi应用程序部署到服务器需要做什么,以便正确安装事件接收器而无需以管理员身份运行该应用程序。
在开发环境中,以管理员身份运行的Visual Studio可以启动我的aspnet核心webapi应用程序,从而允许它在本地计算机上创建事件接收器。创建事件接收器后,即使未使用管理员权限启动应用程序,应用程序也会记录事件。
将应用程序发布到测试服务器并在IIS下运行时,如果日志记录配置为创建事件源(如果本地计算机上不存在),则应用程序将无法加载。
我正在将Serilog与Serilog.Sinks.EventLog扩展一起使用。
将manageEventSource设置为true时,由于无法创建事件源,因此不会加载应用程序。当manageEventSource设置为false时,应用程序将正确加载,但不会将任何事件发送到EventLog。
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File("webservices-log.txt", rollingInterval: RollingInterval.Day)
.WriteTo.EventLog("WebServices", manageEventSource: false, restrictedToMinimumLevel: LogEventLevel.Error)
.CreateLogger();
Visual Studio完成发布后,我需要运行该应用程序并将错误记录到事件日志中,但是如果尚未安装事件接收器,则该应用程序将失败,除非直接忽略创建步骤。如何更新发布步骤以在目标计算机上安装事件接收器,或者在发布到目标计算机之前我需要做些什么手动干预?