Tom*_*omR 9 c# debugging trace web-services wireshark
我试图从C#应用程序调用Web服务,但我得到例外:
InvalidOperationException
client found response content type of 'text/html; charset=utf-8', but expected 'text/xml'
Run Code Online (Sandbox Code Playgroud)
如何查看请求并响应URL的消息?我的服务在桌面上运行,但客户端在Windows Mobile CE 6.x上运行,移动设备使用usb连接到Dektop.事实上,这就是为什么我没有在Wireshark或Fiddler中看到HTTP流量的原因(我已经尝试了两种).服务工作 - 我可以使用Postman检查它(方法返回正确和有意义的结果XML).
您可以在内部进行HTTP调用的某些库上打开调试功能(在我的情况下,它们是HTTPS,因此无法通过wirehark进行检查)。
您应该添加到app.config
:
<system.diagnostics>
<trace autoflush="true"/>
<sources>
<source name="System.Net" tracemode="protocolonly" maxdatasize="1024">
<listeners>
<add name="TraceFile"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="TraceFile" type="System.Diagnostics.TextWriterTraceListener"
initializeData="trace.log"/>
</sharedListeners>
<switches>
<add name="System.Net" value="Verbose"/>
</switches>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
这将trace.log
在您的exe的运行位置添加一个。如果您不知道服务在哪里运行,则应该可以使用非相对路径。
另外,在Visual Studio中在输出窗口(而不是输出控制台)中运行代码时,这将添加相同的日志。
ps:如果只需要请求和响应的标题以及有关打开和关闭连接的信息(在我的情况下为HTTPS),则可以将日志级别更改为“信息”。
好吧,这听起来很奇怪,但是您是否在 IIS 中使用默认文档?我知道情况可能不应该如此,但是当我为我的 Web 服务站点设置默认文档并将我的 ServiceReference 指向缩短的地址时,它能够运行......但只能在本地运行。否则,我会得到同样的“Html 而不是 XML”错误。
在我的例子中,修复方法是不再引用服务引用中的缩短 URL,并键入完整的 URL(即不使用站点的默认文档属性。)
归档时间: |
|
查看次数: |
1810 次 |
最近记录: |