Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net Core 1日志记录错误-找不到源应用程序中事件ID xxxx的说明_C#_Asp.net Core_Event Log - Fatal编程技术网

C# ASP.Net Core 1日志记录错误-找不到源应用程序中事件ID xxxx的说明

C# ASP.Net Core 1日志记录错误-找不到源应用程序中事件ID xxxx的说明,c#,asp.net-core,event-log,C#,Asp.net Core,Event Log,我想从ASP.Net核心应用程序的控制器方法写入Windows事件日志 我遇到的问题是,在我希望写入日志信息的地方,我一直在获取错误/信息日志: 无法从源应用程序中获取事件ID xxxx的描述 找到了。引发此事件的组件未安装 在本地计算机上或安装已损坏。你可以 在本地计算机上安装或修复组件 如果事件起源于另一台计算机,则显示信息 必须与事件一起保存 本次活动包括以下信息: My.Full.Qualified.Namespace.WebApi.Controllers.MyController错误

我想从ASP.Net核心应用程序的控制器方法写入Windows事件日志

我遇到的问题是,在我希望写入日志信息的地方,我一直在获取错误/信息日志:

无法从源应用程序中获取事件ID xxxx的描述 找到了。引发此事件的组件未安装 在本地计算机上或安装已损坏。你可以 在本地计算机上安装或修复组件

如果事件起源于另一台计算机,则显示信息 必须与事件一起保存

本次活动包括以下信息:

My.Full.Qualified.Namespace.WebApi.Controllers.MyController错误 发生在方法“MyMethod”中

消息资源存在,但在中找不到该消息 字符串/消息表

作为一个简要说明,在.NETCore之前,我始终或正确地配置了另一个第三方库

我使用的方法是:

在安装Nuget软件包:和之后,我在开始配置代码块中指定

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory
            .AddDebug()
            .AddEventLog();

        //... rest of the code here
    }
对于每个控制器,使用
ILogger
方法

public class MyController : Controller
{
    private readonly IMyRepository _myRepository;
    private readonly ILogger _logger;

    public MyController(IMyRepository myRepository,
        ILogger<MyController> logger)
    {
        _myRepository = myRepository;
        _logger = logger;
    }

    public bool MyMethod(MyRequestObject request)
    {
        try
        {
            var response = privateDoSomethingMethod(request);

            return response.Success;
        }
        catch (Exception ex)
        {
            _logger.LogError(6666,ex, "Error occured when doing stuff.");

            return false;
        }
    }
公共类MyController:Controller
{
私有只读IMyRepository\u myRepository;
专用只读ILogger\u记录器;
公共MyController(IMyRepository myRepository,
ILogger(记录器)
{
_myRepository=myRepository;
_记录器=记录器;
}
公共布尔MyMethod(MyRequestObject请求)
{
尝试
{
var响应=privateDoSomethingMethod(请求);
回应。成功;
}
捕获(例外情况除外)
{
_logger.LogError(6666,例如,“在执行任务时发生错误”);
返回false;
}
}
这是基于

我读过并尝试过:


我无法在.Net Core 2.0中使用loggerFactory.AddEventLog()。因为Microsoft.Extensions.Logger.EventLog只存在于.Net 4.5.1中,尽管Nuget软件包适用于2.0.0,所以看起来它需要移植到Core

但也许这对你有用。 添加您的CustomEventID

 public static class CustomEventIds
{
    public const int Debug = 100;
    public const int Information = 101;
    public const int Warning = 102;
    public const int Error = 103;
    public const int Critical = 104;
}
以及:


我想建议您需要创建一个源代码,该源代码通常用于修复此问题,但您已经尝试过了,我使用了Serilog和dotnet core来写入事件日志(尚未升级到2.0)如果所有其他的都失败了,你可以试试。谢谢你的回答,但是我已经指定了一个事件ID。你可以参考代码。如果OP能够安装NuGET包,那么它是可用的。NuGet不允许你安装你的平台不可用的软件包。这里说它在内核中是不可用的。你可以考虑调用ASSEM。bly在运行时可以为您执行事件日志记录,请参见
_logger.LogInformation(CustomEventIds.Debug, "Starting to do something with input: {0}", "test");