1

注:私はWebサービスを利用しているだけで、Webサービスコードを制御できません。

したがって、.net 2.0では、Webサービスを参照し、Webサービスの名前空間にfoobarなどのクラスが表示されます。それは次のように定義されます:

public class foobar : System.Web.Services.Protocols.SoapHttpClientProtocol

しかし、.net 3.5では、同じWebサービスへの参照を追加すると、このfoobarクラスを使用できなくなります。上記のfoobarクラスのすべてのメソッドを公開するインターフェースであるfoobarSoapが表示されます。それは次のように定義されます:

public interface foobarSoap

ただし、プロパティは公開されません(明らかな理由により)。

これらのプロパティにアクセスする必要があります。どうすればいいのですか?

4

4 に答える 4

1

Webサービス記述言語ツールWsdl.exe)を使用して、実際のクラスファイルを生成してみてください。

wsdl.exe /language:cs http://www.example.com/FooService.wsdl

WSDLツールの詳細については、MSDNページを参照してください。

于 2008-10-21T23:52:10.210 に答える
0

2005 から 2008 にアップグレードしたときにも同様の問題が発生しました。「サービス参照の追加」をクリックすると、新しいダイアログが表示されます。下部にある [詳細設定] ボタンをクリックし、次に表示されるダイアログで、下部の互換性セクションにある [Web 参照の追加] ボタンをクリックします。次に、おそらく使い慣れたダイアログが表示され、標準の 2.0 プロキシ クラスが表示されます。

于 2008-12-15T19:46:49.637 に答える
0

私は、プロパティがサービス定義 (WSDL) の一部ではないので、それらを使用できない可能性があるというこっそりと感じています。可能であれば、サービスを保守している人に、プロパティを実際のメソッドとして公開するよう説得してみてください。

プロパティにアクセスできない可能性が高く、その場合は運が悪いだけかもしれません。ごめん。

プロパティを公開してみて、結果をここに報告します。

編集: WCF を使用してインターフェイス プロパティを公開することはできません。単にコンパイルされません。

[ServiceContract]
public interface IFooService
{
    [OperationContract] // This is not allowed, it will not compile
    string Name { get; set; }
}

編集: ASMX Web サービスを使用しても実行できません。: (

[WebService(Namespace = "http://tempuri.org/")]
public class FooService : System.Web.Services.WebService
{
    [WebMethod] // This is not allowed, it will not compile
    string Name { get; set; }
}
于 2008-10-22T01:37:03.570 に答える
0

[サービス参照の追加] メニューを使用して、サンプル プロジェクトを作成し、サービスへの Web プロキシを作成しました。

http://www.xmlme.com/WSShakespeare.asmx

Visual Studio 2008 は、WSDL に基づいてインターフェイスとプロキシ クラスを生成しました。たとえば、インターフェイス ShakespeareSoap を実装するクラス ShakespeareSoapClient があります。

それはうまくいくようです。私は何かが欠けていますか?

于 2008-10-22T01:51:18.080 に答える