【发布时间】:2011-06-28 10:43:34
【问题描述】:
我正在为 .NET 构建一个 WebDAV 服务器类库,但遇到了一些困难。
我计划为 .NET 3.5 构建类库,因为它可以被 .NET 3.5 和 4.0 应用程序使用。我有很多以前开始的项目的代码,离完成还差得很远,但它有正确的结构,所以我将它复制到一个新的类库项目中,并从新的想法开始。
但是,在使用 .NET 运行时 HttpListener 类提供内容时,.NET 3.5 和 4.0 之间似乎存在一些重大变化。
如何正确调试发送的内容?我尝试了 Fiddler,但它不会从我的程序中获取任何内容,即使我尝试遵循此处的所有提示:How to display localhost traffic in Fiddler while debugging an ASP.NET application?
那篇文章和我的设置之间的区别在于,我当前正在运行一个托管 HttpListener 的普通控制台应用程序,并且我正在通过在 VMware 7.1 下运行的 Ubuntu 10.04 控制台虚拟机与它交谈。目前最好的 WebDAV 单元测试是 litmus 应用程序,我还没有在 Windows 上运行它。
我假设差异是 Fiddler 根本不会在我的程序内外获取任何流量的原因。
我认为有重大变化的原因是,当石蕊应用程序进入第 2 节(复制/移动)第 4 步(验证服务器不会覆盖,除非被告知)时,它说:
4. copy_overwrite........ FAIL (COPY overwrites collection: Could not parse response status line)如果我的服务器程序和类库是用 .NET 3.5 和 4.0 编译的:
4.copy_overwrite........通过我做了一个小的“对象转储器”并转储了正在发回的响应对象:
如果您想查看它们,您需要在本地比较程序中比较这两者。
我删除了一些明显会改变的东西,一些内部 Id,一些端口号和类似的东西,但其余部分保持原样。
编辑:嗯,正如 Jon 所说,Fiddler 在我目前的设置中并不好,但 Wireshark 肯定是。不幸的是,我离问题的解决方案还差得远。这是 Wireshark 告诉我我发送的响应数据:
HTTP/1.1 412 Pre HTTP/1.1 412 Pre 条件 失败 条件 失败 ..传输编码 ..传输编码 ing: 分块..Se ing: 分块..Se rver:微软- rver:微软- HTTPAPI/2.0..DAV HTTPAPI/2.0..DAV : 1,2,1#extend.. : 1,2,1#extend.. 日期:周三,16 Fe 日期:周三,16 Fe b 2011 15:42:02 b 2011 15:51:34 格林威治标准时间....0.... 格林威治标准时间....0....我验证了我为这篇文章截取的字节内容,除了时间戳之外,它们是相同的,所以这不是问题。
【问题讨论】:
标签: .net webdav httplistener