如何调试或跟踪ASP.Net WebApi 2(5.0)XML序列化?

时间:2013-12-25 18:51:42

标签: c# asp.net asp.net-web-api debug-symbols

我正在编写ASP.Net WebApi 2(5.0)应用程序,我在自定义XML序列化方面遇到了一些问题 - 在请求体的成功反序列化(未调用控制器)后,POST请求挂起。我试图调试这个但是一旦我退出反序列化方法,调试器就不会向我显示任何代码。请求本身无处可寻(在IIS Express进程终止后,在Fiddler中显示504)。

进一步调查显示WebApi NuGet包中没有包含pdbs。我搜索了几个调试符号源,我设法找到除System.Net.Http.Formatting之外的所有WebApi库的调试符号,这些符号缺失:

Assembly title: System.Net.Http.Formatting (88a1bd8d3344b5df289577425c0314e7f521e88a)
Assembly file version: 5.0.11001.0
Assembly version: 5.0.0.0
SymSrv: http://referencesource.microsoft.com/symbols/System.Net.Http.Formatting.pdb/2F953AE40BC041E5AD078905E6D532FB1/System.Net.Http.Formatting.pdb (not found)
SymSrv: http://msdl.microsoft.com/download/symbols/System.Net.Http.Formatting.pdb/2F953AE40BC041E5AD078905E6D532FB1/System.Net.Http.Formatting.pdb (not found)
SymSrv: http://srv.symbolsource.org/pdb/Public/System.Net.Http.Formatting.pdb/2F953AE40BC041E5AD078905E6D532FB1/System.Net.Http.Formatting.pdb (not found)

看起来该库的pdb根本不可用。如果我在自托管下运行相同的代码,它可以完美地工作(但仍然不能完全调试)。我关闭了web.config中的所有处理程序(在web主机下),除了一个:

<handlers>
  <clear />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

问题仍然存在。

有没有办法调试/跟踪WebApi序列化代码以了解问题所在?

1 个答案:

答案 0 :(得分:1)

您可以尝试Microsoft Reference Source Code Center并查看它们是否可用。

符号服务器为http://referencesource.microsoft.com/symbols

按照说明逐步完成.Net Framework的源代码,而不仅仅是代码。

您还可以download local copies各种版本的源代码。