如何启用 WebAPI 响应跟踪?

问题描述 投票:4回答:1

我有一个建立在 WebAPI 4.0 上的服务,但我们有一个问题,即一些客户端接收的是 JSON 而不是 XML,我怎样才能看到实时服务上的 WebAPI 内部发生了什么?

logging asp.net-web-api trace diagnostics
1个回答
17
投票

确保编译和部署的代码库有这个设置。

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // etc.

        config.EnableSystemDiagnosticsTracing();

        // etc.
    }
}

然后把这个添加到你的 Web.config 文件。

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener" 
          type="System.Diagnostics.TextWriterTraceListener" 
          initializeData="E:\CompressedLogs\Service1-WebApi-TraceOutput.log" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

你应该在日志文件中看到这些东西。

w3wp.exe Information: 0 : Request, Method=GET, Url=http://MonkeyChops.potato.org/v1/PantsSpiderman/431?api_key=0, Message='http://MonkeyChops.potato.org/v1/PantsSpiderman/431?api_key=0'
w3wp.exe Information: 0 : Message='PantsSpiderman', Operation=DefaultHttpControllerSelector.SelectController
w3wp.exe Information: 0 : Message='Spandex.MonkeyChops.WebApi.Controllers.PantsSpidermanController', Operation=DefaultHttpControllerActivator.Create
w3wp.exe Information: 0 : Message='Spandex.MonkeyChops.WebApi.Controllers.PantsSpidermanController', Operation=HttpControllerDescriptor.CreateController
w3wp.exe Information: 0 : Message='Selected action 'Get(String id)'', Operation=ApiControllerActionSelector.SelectAction
w3wp.exe Information: 0 : Message='Parameter 'id' bound to the value '431'', Operation=ModelBinderParameterBinding.ExecuteBindingAsync
w3wp.exe Information: 0 : Message='Model state is valid. Values: id=431', Operation=HttpActionBinding.ExecuteBindingAsync
w3wp.exe Information: 0 : Message='Will use same 'XmlMediaTypeFormatter' formatter', Operation=XmlMediaTypeFormatter.GetPerRequestFormatterInstance
w3wp.exe Information: 0 : Message='Selected formatter='XmlMediaTypeFormatter', content-type='text/xml; charset=utf-8'', Operation=DefaultContentNegotiator.Negotiate
w3wp.exe Information: 0 : Message='Action returned 'StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.ObjectContent`1[[Spandex.MonkeyChops.Models.Pants.result, Spandex.MonkeyChops.WebApi, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], Headers:
{
  Cache-Control: public, must-revalidate, max-age=86400
  Content-Type: text/xml; charset=utf-8
}'', Operation=ReflectedHttpActionDescriptor.ExecuteAsync
w3wp.exe Information: 0 : Operation=ApiControllerActionInvoker.InvokeActionAsync, Status=200 (OK)
w3wp.exe Information: 0 : Operation=PantsSpidermanController.ExecuteAsync, Status=200 (OK)
w3wp.exe Information: 0 : Response, Status=200 (OK), Method=GET, Url=http://MonkeyChops.potato.org/v1/PantsSpiderman/431?api_key=0, Message='Content-type='text/xml; charset=utf-8', content-length=unknown'
w3wp.exe Information: 0 : Operation=XmlMediaTypeFormatter.WriteToStreamAsync
w3wp.exe Information: 0 : Operation=PantsSpidermanController.Dispose
© www.soinside.com 2019 - 2024. All rights reserved.