0

我在 Azure Worker Role 和带有 ElasticSearch 接收器的 WebApi 中使用 Serilog。

在 Worker 角色上一切正常。

在 WebApi 上,我尝试了 Trace & Email 接收器,它们工作正常。ElasticSearch 接收器根本没有记录。

这是我的配置:

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

如果我尝试在控制器中写入日志,我会将它们保存在 Trace 中,但 Trace 中没有。

4

1 回答 1

1

问题来自自签名证书。

我创建了自己的 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;
于 2015-03-11T11:50:48.450 回答