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 をお勧めします。Web サイトからの応答を元の形式で簡単に表示できるため、探しているラインと位置に近づくことができます。

于 2012-05-14T18:27:27.357 に答える