Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.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
.net 在尝试为侦听器设置Azure接收器时,如何跟踪异常源_.net_Azure_Azure Table Storage_Semantic Logging_Slab - Fatal编程技术网

.net 在尝试为侦听器设置Azure接收器时,如何跟踪异常源

.net 在尝试为侦听器设置Azure接收器时,如何跟踪异常源,.net,azure,azure-table-storage,semantic-logging,slab,.net,Azure,Azure Table Storage,Semantic Logging,Slab,我正在尝试使用语义日志应用程序块将日志存储到Azure表存储中。设置: 我有一个奇怪的例外: 引发异常:Microsoft.Practices.EnterpriseLibrary.SemanticBlocking.WindowsAzure.dll中的“System.MissingMethodException” 其他信息:未找到方法:“作废Microsoft.WindowsAzure.Storage.Table.CloudTableClient.set\u RetryPolicyMicrosof

我正在尝试使用语义日志应用程序块将日志存储到Azure表存储中。设置:

我有一个奇怪的例外:

引发异常:Microsoft.Practices.EnterpriseLibrary.SemanticBlocking.WindowsAzure.dll中的“System.MissingMethodException”

其他信息:未找到方法:“作废Microsoft.WindowsAzure.Storage.Table.CloudTableClient.set\u RetryPolicyMicrosoft.WindowsAzure.Storage.RetryPolicys.IRetryPolicy”

我对真实账户也有同样的问题。软件包版本所有这些都来自NuGet:

EnterpriseLibrary.semanticlocking-2.0.1406.1 EnterpriseLibrary.SemanticBlocking.WindowsAzure-2.0.1406.1 WindowsAzure.Storage-7.0.0
如何跟踪异常的来源?谷歌并没有提到找不到的方法。要在您的计算机上测试的项目是。

出现此错误的原因是SLAB依赖于存储客户端库3.0.2.0,并且在客户端CloudTableClient上设置重试策略。例如,在版本4.0.0.0中已弃用,在某些更高版本中已删除,但不确定是哪个版本


因为您使用的是7.x版的存储客户端库,在CloudTableClient上设置RetryPolicy的方法不存在,因此出现此错误。

出现此错误的原因是,SLAB依赖于存储客户端库3.0.2.0,并且在客户端CloudTableClient上设置重试策略,例如,在版本4.0.0.0中被弃用,在某些更高版本中被删除确定是哪一个


因为您使用的是7.x版的存储客户端库,所以在CloudTableClient上设置RetryPolicy的方法不存在,因此您会遇到此错误。

正如Guarav所说,SLAB是根据非常旧的Microsoft.WindowsAzure.storage版本构建的。问题是,使用client.RetryPolicy而不是client.DefaultRequestOptions.RetryPolicy。我试着更新NuGet软件包并对其进行更改,但它似乎破坏了一些测试,而且修复它们似乎并不简单。另外,似乎没有4.6支持:

这里有一个缺点:,但我怀疑它是否会很快发生任何事情。最后,我可能会编写一些简单的接收器,将日志重定向到Azure的跟踪侦听器,以便处理这些日志

编辑以下是尚未测试的代码:

public class SystemDiagnosticsTraceSink : IObserver<EventEntry>
{
    public void OnNext(EventEntry entry)
    {
        if (entry == null) return;
        using (var writer = new StringWriter())
        {
            new EventTextFormatter().WriteEvent(entry, writer);
            var eventText = writer.ToString();
            switch (entry.Schema.Level)
            {
                case EventLevel.LogAlways:
                case EventLevel.Critical:
                case EventLevel.Error:
                    Trace.TraceError(eventText);
                    return;
                case EventLevel.Warning:
                    Trace.TraceWarning(eventText);
                    return;
                case EventLevel.Informational:
                case EventLevel.Verbose:
                    Trace.TraceInformation(eventText);
                    return;
                default:
                    Trace.TraceError("Unknown event level: " + entry.Schema.Level);
                    Trace.TraceInformation(eventText);
                    return;
            }
        }
    }
    public void OnError(Exception error)
    {} //you might want to do something here
    public void OnCompleted()
    {} //nothing to do
}
和扩展类:

public static class SystemDiagnosticsTraceSinkExtensions
{
    public static SinkSubscription<SystemDiagnosticsTraceSink> LogToSystemDiagnosticsTrace
      (this IObservable<EventEntry> eventStream)
    {
        if (eventStream == null) throw new ArgumentNullException(nameof(eventStream));

        var sink = new SystemDiagnosticsTraceSink();
        return new SinkSubscription<SystemDiagnosticsTraceSink>(
                       eventStream.Subscribe(sink), sink);
    }
}

正如Guarav所说,SLAB是根据非常旧的Microsoft.WindowsAzure.Storage版本构建的。问题是,使用client.RetryPolicy而不是client.DefaultRequestOptions.RetryPolicy。我试着更新NuGet软件包并对其进行更改,但它似乎破坏了一些测试,而且修复它们似乎并不简单。另外,似乎没有4.6支持:

这里有一个缺点:,但我怀疑它是否会很快发生任何事情。最后,我可能会编写一些简单的接收器,将日志重定向到Azure的跟踪侦听器,以便处理这些日志

编辑以下是尚未测试的代码:

public class SystemDiagnosticsTraceSink : IObserver<EventEntry>
{
    public void OnNext(EventEntry entry)
    {
        if (entry == null) return;
        using (var writer = new StringWriter())
        {
            new EventTextFormatter().WriteEvent(entry, writer);
            var eventText = writer.ToString();
            switch (entry.Schema.Level)
            {
                case EventLevel.LogAlways:
                case EventLevel.Critical:
                case EventLevel.Error:
                    Trace.TraceError(eventText);
                    return;
                case EventLevel.Warning:
                    Trace.TraceWarning(eventText);
                    return;
                case EventLevel.Informational:
                case EventLevel.Verbose:
                    Trace.TraceInformation(eventText);
                    return;
                default:
                    Trace.TraceError("Unknown event level: " + entry.Schema.Level);
                    Trace.TraceInformation(eventText);
                    return;
            }
        }
    }
    public void OnError(Exception error)
    {} //you might want to do something here
    public void OnCompleted()
    {} //nothing to do
}
和扩展类:

public static class SystemDiagnosticsTraceSinkExtensions
{
    public static SinkSubscription<SystemDiagnosticsTraceSink> LogToSystemDiagnosticsTrace
      (this IObservable<EventEntry> eventStream)
    {
        if (eventStream == null) throw new ArgumentNullException(nameof(eventStream));

        var sink = new SystemDiagnosticsTraceSink();
        return new SinkSubscription<SystemDiagnosticsTraceSink>(
                       eventStream.Subscribe(sink), sink);
    }
}

它在7.0.0中被弃用在6.2.2-PreviewWit在7.0.0中被弃用在6.2.2-previewNote将日志上载到Azure表很好,但将它们上载到Application Insights AI则更好:。如果您有标准或高级层,那么您可以配置连续导出到表存储并免费获取…请注意,将日志上载到Azure表很好,但将其上载到Application Insights AI则更好:。如果您有标准或高级存储层,那么您可以配置连续导出到表存储,并免费获得该存储层。。。