我该如何调试此Web服务?

时间:2012-05-14 18:20:01

标签: c# asp.net web-services

我有一个简单的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);
}

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

不幸的是,它现在在服务电话中爆炸,声称:

  

异常XML文档中存在错误(1,1113)。(InvalidOperationException)

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

我认为错误中的数字应该是行和字符数...但是浏览器似乎重新格式化了xml文档,因此我无法轻易看到原始(1,11113)位置是什么。

我没有看到一种简单的方法来拦截响应并对其进行检查,因为它似乎一旦发现它就会爆炸。

我该如何调试?

2 个答案:

答案 0 :(得分:3)

如果您控制该服务,则可以进入该服务。如果它是您的解决方案的一部分并在本地盒子上的VS WebDev中托管,只需来自Visual Studio的F11,如果远程托管服务(例如,通过其他计算机上的IIS),则在服务主机msdn上运行远程调试工具,然后你就可以远程进入服务了。

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

第二个想法如果返回的XML无法反序列化到您的业务对象中,则可能会发生此错误。可能会在任何一方更改类时发生,或者您尝试使用不同版本的业务库而不是服务正在使用。

答案 1 :(得分:1)

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