.NETクライアントがSOAP.asmxWebサービスを呼び出しています。私が開発しているクライアントは、それ自体が.NET4のWCFサービスです。宛先の.asmxWebサービスは、アプリケーションのサービスリファレンスです。目的地を管理することはできません。
問題は、Webサービスを呼び出すときに、呼び出し用に作成されたXMLに、送信されるプロキシクラスのシリアル化されたXMLのルート要素に特定の名前空間が含まれていないことです。
むしろ、ドキュメント内にネストされた少数の要素に名前空間を適用します。
プロキシクラスを使用する場合:
var x = new RemoteService_PortTypeClient();
x.SomeMethod(somePayload);
宛先サービスは、次の全体でhl7名前空間でフォーマットされている場合に例外を返します。
要素'urn:hl7-org:v3:typeId'のスキーマ情報が見つかりませんでした。
現在のシリアル化されたプロキシオブジェクト(somePayload
)は、次のように送信されます。
<MyRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
....
<MyNode value="20120801100803" xmlns="urn:hl7-org:v3" />
送信方法:
<MyRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="urn:hl7-org:v3">
....
<MyNode value="20120801100803" />
要素に散在するのではなく、ルートで名前空間を宣言するようにクライアントに強制するにはどうすればよいですか?
この名前空間がルートにあることは、そのように機能することが実証されているため、サービスによってエラーなしで受け入れられることを私は知っています。
これを強制するための宣言/属性がReferences.cs
またはweb.configまたはその他にありますか?