为什么我会收到错误“不支持服务类型ITraceWriter”。来自Azure?

时间:2016-12-12 21:17:00

标签: c# asp.net azure asp.net-web-api

我正在尝试启动我的Web API 2并在Azure App Service上运行。它在我的机器上运行正常,在IIS 10上,从包Microsoft.AspNet.WebApi.Tracing添加了以下跟踪:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.EnableSystemDiagnosticsTracing();
        SystemDiagnosticsTraceWriter traceWriter = config.EnableSystemDiagnosticsTracing();
        traceWriter.IsVerbose = true;
        traceWriter.MinimumLevel = TraceLevel.Debug;
        config.Services.Add(typeof(ITraceWriter), new TextFileTracer());

这在我的开发机器上工作正常,但我收到了错误

  

不支持服务类型ITraceWriter。

一发布到Azure。我认为一个现代的ASP.NET应用程序应该是自包含的,而不是依赖于主机上存在或配置的服务,以及一个非常最新的主机。为什么会这样?

1 个答案:

答案 0 :(得分:0)

根据您的描述,我在我的Web API应用程序上测试了您的代码,我在本地方面收到了如下服务器错误。

  

不支持服务类型ITraceWriter。   参数名称:serviceType

正如本官方document中提到的关于设置Trace Writer的内容:

  

要启用跟踪,您必须配置Web API以使用ITraceWriter实现。您可以通过HttpConfiguration对象执行此操作,如以下代码所示:

config.Services.Replace(typeof(ITraceWriter), new TextFileTracer());

  

只能有一个跟踪编写器处于活动状态。默认情况下,Web API设置一个不执行任何操作的“无操作”跟踪器。 (存在“no-op”跟踪器,因此跟踪代码在编写跟踪之前不必检查跟踪编写器是否为空。)

使用ITraceWriter实例替换TextFileTracer服务后,我可以让它在我身边和Azure上按预期工作。