1

オブジェクトまたは構造体を winform アプリから .asmx Web サービスに渡す良い方法を知っていますか? これは .NET では非常に簡単なはずですが、私はそれを見ていません。

Rick Strahl は 2004 年に同じ質問をしましたが、私が探しているものはおそらく存在しないようです:

http://www.west-wind.com/weblog/posts/2004/Apr/18/Net-Web-Services-and-passing-objects-and-Data

基本的に、10 個の string または int メンバーを持つ単純な構造体があります。それを asmx Web サービスに送信し、強い型付けをそのまま維持したいと考えています。それでおしまい。

クライアントとサービスで構造体を定義しようとしました。次に、構造体定義を含む DLL を作成し、それを Web サービスとクライアントの両方に含めました。名前空間が異なるため、まだ問題がありました。

次のような投稿を見ると、私が説明していることを人々が行っているように見えます。方法がわかりません:

Web サービス経由でオブジェクトを渡す

それがこれを簡単にするなら、私はサービスをWCFに変換することができます-とにかく数ヶ月でそれを変換するでしょう。

4

2 に答える 2

1

なぜ以前に考えなかったのかわかりませんが、ジェレミーの反応が助けになりました。クライアントとサービスでオブジェクトの定義を作成する代わりに、Web サービスで構造体の定義を公開しました。構造体を作成するときは、そのタイプが global::Webservice.com.mydomain.MyStruct であることを確認するだけです。

于 2012-04-25T16:21:11.760 に答える
0

何を試しましたか?どのようなエラーが発生しますか?コードはどのように見えますか?

[Serializable]ただし、インスタンスをWebサービスに渡すクラスを次のように(MSDN)としてマークする必要がある場合があります。

[Serializable] 
public class MyObject
{ 
    // Your properties here
    // Your parameterless constructor
}

デフォルトの(パラメーターなしの)コンストラクターとプロパティを除くすべてが、シリアル化中に削除されることに注意してください。これは、オブジェクトをWebサービスに渡す場合、実際には.NETオブジェクトではなく、(シリアル化された)データを渡すためです。対応するタイプは、サービス契約を通じて利用可能である必要があります。

于 2012-04-25T01:30:02.607 に答える