Serilog ElasticSearch接收器无法在WebApi中工作

时间:2015-03-10 09:59:50

标签: asp.net-web-api elasticsearch serilog

我在Azure工作者角色中使用Serilog&带有ElasticSearch接收器的WebApi。

工作者角色的一切正常。

在WebApi上我尝试了Trace&电子邮件汇,他们工作正常。 ElasticSearch接收器根本没有记录。

这是我的配置:

var logger = new LoggerConfiguration()
                   .MinimumLevel.Information()
                   .WriteTo.Trace()
                   .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("https://myElasticServer")))
                   .CreateLogger();

如果我尝试在控制器中写入Logs,我将它们放在Trace中,但Trace中没有。

1 个答案:

答案 0 :(得分:0)

问题来自自签名证书。

我已经创建了自己的CertificateValidation方法,以忽略基于排除列表的证书验证

private bool MyCertificateValidationCallback(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    if (sslPolicyErrors == SslPolicyErrors.None)
        return true;

    var request = sender as HttpWebRequest;

    if (request != null)
    {
        var exclusion = ConfigurationManager.AppSettings["CertificateExclusion"];

        if (exclusion.Contains(request.Host))
            return true;
    }

    return false;
}

在应用程序启动时注册

ServicePointManager.ServerCertificateValidationCallback = MyCertificateValidationCallback;