我正在尝试启动我的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应用程序应该是自包含的,而不是依赖于主机上存在或配置的服务,以及一个非常最新的主机。为什么会这样?
答案 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上按预期工作。