0

wsdl と xsd が 1 つあり、wsdl から SVC クライアント プロキシを生成しました。wsdl は、インターネット上のどこかの Windows Server 2003 (ローカル ドメイン外) でホストされています。XSDも同じ場所にあります。Web ブラウザーでそれらを表示できますが、問題はありません。

次に、単純なコンソール アプリケーション クライアントを作成しました。クライアントを実行すると、フィドラーで正しい SOAP 応答が表示されますが、コンソール アプリケーションでは応答が null であることがわかります。つまり、SVC クライアントはそれを逆シリアル化できません。

xsd + wsdl も正しく、応答もあると確信しています(フィドラーで確認します)。

wsdl と xsd をローカル ドメイン サーバー (イントラネット) に配置すると、すべて正常に動作し、アプリケーションで適切に逆シリアル化された応答が表示されます。

フィドラーで両方の状況を比較すると、生の応答に違いは見られません。

さらにいくつかのポイント: IIS で WCF サービスをホストしていません。別のサービスをリモートで実行しています。もっとはっきりさせたら教えてください。

ありがとうございました。

編集/更新:投稿を削除しました。問題は IIS6 または IIS7 ではないようです。リモート サーバーがスキーマの場所に問題を引き起こしています。SVC プロキシ クライアントの MessagContract 名前空間で外部サーバーを指している場合、イントラネット サーバーで問題が発生し、問題なく動作します。

例:

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
[System.ServiceModel.MessageContractAttribute(IsWrapped = false)]
public partial class responseTypeOfMethod1
{

[System.ServiceModel.MessageBodyMemberAttribute( Namespace = "http://testserver.xxxxx/yyyy.wsdl", Order = 0)]
public RAT_type RAT;
................
....
..

}

http://testserver.xxxxxがローカル サーバーを指している場合は問題ありません。インターネット サーバーを指している場合、応答は null です。

4

2 に答える 2

1

問題が解決しました。もちろん、これは名前空間の問題であり、内部で使用するツールであるサーバー コードの厄介な場所を見つけるのに長い時間がかかりました。お時間を割いて回答してくださった皆様、ありがとうございました。

于 2012-01-31T18:41:24.577 に答える
1

ここでは、次の 2 つのことが発生する可能性があります。

  1. リモート サーバーから応答が返されない
  2. クライアントは応答を逆シリアル化できません

Wireshark またはその他のネットワーク スニファを使用して、どのような応答が戻ってくるかを確認します。

問題がデシリアライズできないことが原因である場合は、名前空間の違いである可能性があります。

于 2012-01-30T18:49:39.093 に答える