2009-03-09 10 views
0

I複数のDataTableを返すWebサービスを統合します。Webサービスの戻り値の型が予期せず変更される

Webサービスリファレンスを更新すると、いくつかのメソッドの戻り値の型がDataTableから2つのアイテムの配列(1つはデータテーブルの他のスキーマ用)のように見えるクラスに変更されることがあります。ブラウザで

我々はそのような参照データテーブルのルックスを見て:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <NormalMethodResponse xmlns="http://abc.com"> 
     <NormalMethodResult> 
     <xsd:schema>schema</xsd:schema>xml</NormalMethodResult> 
    </NormalMethodResponse> 
    </soap:Body> 
</soap:Envelope> 

しかしproblemmatic方法は次のようになります。

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <ProblemmaticMethodResponse xmlns="http://abs.com"> 
     <ProblemmaticMethodResult>xmlxml</ProblemmaticMethodResult> 
    </ProblemmaticMethodResponse> 
    </soap:Body> 
</soap:Envelope> 

通常、このproblemmatic方法は、データテーブルを返し、それがウェブの間で変化していません参照更新。

これはなぜ起こるのですか?

EDIT:私は別のマシンでWeb Referenceを更新した後に問題を解決しました。メソッドはDataTableを返します。しかし、なぜこれが起こるのかまだ分かりません。

答えて

1

まず、DataTableまたはDataSetを返すことは、.NET固有のものであるため、ベストプラクティスではありません。

第2に、DataTableの一部であるDataSetのように、そのモードがスキーマを含むように変更されたように見えます。 SchemaSerializationModeがExcludeSchemaに設定されているDataSetの一部としてDataTableを明示的に作成することもできます。

関連する問題