3

我有一个简单的 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, 1113) 位置是什么。

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

我该如何调试呢?

4

2 回答 2

3

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

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

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

于 2012-05-14T18:32:12.070 回答
1

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

于 2012-05-14T18:27:27.357 回答