2012-05-14 25 views
3

我有一个看起来像这样一个简单的Web服务:如何调试此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)错误(InvalidOperationException异常)

我可以去。浏览器中的Web服务,放入相同的值,我得到一个看似有效的XML响应。 (它对我来说看起来没问题,我通过W3Schools的XML解析器运行它,并将其清除。)

我认为错误中的数字应该是行和字符编号......但浏览器似乎要重新格式化xml文档,所以我不能轻松看到原始位置(1,1113)的位置。

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

我该如何调试?

+1

http://www.fiddler2.com/fiddler2/ – asawyer

回答

1

如果您使用Firefox,我建议使用Firebug。您将能够以原始格式轻松查看网站的回复,这可能会让您更接近您所寻找的线路和位置。

+1

我现在没有萤火虫,但如果我认为它会有帮助的话,我会很容易地切换到Firefox/Firebug进行调试。不幸的是,我决定尝试使用评论中提出的Fiddler的建议,我认为这会得到同样的回应。在那里仍然没有爱......也没有任何明显的表现。然而,这个想法+1。没有理由不让我(或下一个人提到这个问题)到达与Fiddler相同的位置。 – Beska

3

如果你控制服务,你可以进入它。如果它是您的解决方案的一部分,并且在您的本地机器上托管在VS WebDev中,那么只需从Visual Studio提供F11,如果远程托管服务(例如通过其他计算机上的IIS)在服务主机msdn上运行远程调试工具,然后您将能够远程介入该服务。顺便说一下,您可以告诉Visual Studio重新使用来自服务的类型的引用库中的对象:只需从服务上下文菜单中选择配置服务引用,并告诉哪些库可以重用。

第二个想到如果返回的XML无法反序列化到您的业务对象可能会发生此错误。可能发生在任何一方改变了类的情况下,或者您尝试使用与服务使用的不同版本的业务库。

+0

那么,第一部分并没有帮助我......因为除了你所看到的,我没有在服务方面做任何事情。这部分工作正常。我得到这个对象...然后返回它。尽管如此,这还是第二款漂亮的消息的+1。 – Beska

+0

嗯。我认为配置服务参考可能有帮助,但我认为这个窗口在VS 2005中不可用。您是否知道2005年是否有类似的功能? – Beska