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 です。