如何调试此 Web 服务

本文关键字:Web 服务 调试 何调试 | 更新日期: 2023-09-27 18:34:04

我有一个简单的Web服务,看起来像这样:

[WebMethod]
public OrderForecastItem GetOrderForecast(int shipTo, string catalogName, bool showPricing)
{ 
    return OrderForecastManager.GetOrderForecast(shipTo, catalogName, showPricing);
}

我以一种相当简单的方式从另一个地方调用它:

using (OrderForecastWS.OrderForecastWS service = new OurSite.Web.Reporting.OrderForecastWS.OrderForecastWS())
{
    OrderForecastItem orderForecastItems = service.GetOrderForecast(2585432, "DENTAL", false);
}

经过一些体操让系统理解我在客户端和服务器端谈论相同类型的对象(我不得不在我的Web References中打开Reference.cs文件,删除生成的OrderForecastItem并添加指向我们真实OrderForecastItem的链接(,系统运行并尝试获取该项目。

不幸的是,它现在在服务呼叫期间轰炸,声称:

异常 XML 文档 (1, 1113( 中存在错误。(无效操作异常(

我可以在浏览器中转到 Web 服务,输入相同的值,然后得到一个看似有效的 XML 响应。 (对我来说看起来没问题,我通过 W3Schools 的 XML 解析器运行它,它清除了它。

我认为错误中的数字应该是行和字符号......但是浏览器似乎重新格式化了XML文档,所以我不容易看到原始(1,1113(位置是什么。

我没有看到一种简单的方法来拦截响应并检查它,因为它似乎一得到它就会爆炸。

我该如何调试?

如何调试此 Web 服务

如果控制服务,则可以单步执行。如果它是解决方案的一部分并且托管在本地盒子上的VS WebDev中,只需Visual Studio中的F11,如果服务是远程托管的(例如,由其他计算机上的IIS托管(,请在服务主机msdn上运行远程调试工具,然后您将能够远程介入该服务。

顺便说一下,你可以告诉Visual Studio对服务中的类型重用引用库中的对象:只需从服务上下文菜单中选择"配置服务引用",并告诉要重用哪些库。

再三考虑,如果返回的 XML 无法反序列化到业务对象中,则可能会发生此错误。当两端的类发生更改,或者您尝试使用与服务使用的不同版本的业务库时,可能会发生这种情况。

如果你使用Firefox,我会推荐Firebug。您将能够以原始格式轻松查看来自网站的响应,这可能会使您更接近您要查找的行和位置。