Web参照の代わりにサービス参照を追加するときにSilverlightでWebサービスクラスを使用する
-
05-07-2019 - |
質問
シナリオ:
Silverlight 3.0をWebサービスのクライアントとして使用しています。
デザイン:
サーバーには DeviceInfoService という名前のクラスがあり、デバイスのリストの取得、デバイスのプロパティの取得などの基本的な機能を備えています。
ASP.NETプロジェクトを開いてWeb参照を追加しようとすると、「Web参照」を追加するオプションが見つかります。この方法でWeb参照を追加すると、DeviceInfoServiceクラスにアクセスできます。それには、オブジェクトを作成してから、メソッドにアクセスします。
Webリファレンスv / sサービスリファレンス:
Silverlightへのアクセス:サービス参照を追加しようとすると、Web参照を追加するオプションがありません。サービスリファレンスを使用すると、WSDLファイルがダウンロードされるまで、すべてが正常に機能します。 .NET 2.0に戻ることでこのオプションを取得できると人々は言いますが、おそらく.NET 2.0ではSilverlightは動作しません
問題
クラスDeviceInfoServiceにアクセスしようとすると、見つかりません。私が取得するのは、インターフェース-DeviceInfoServiceSoapおよびDeviceInfoServiceSoapChannelのみです。 DeviceInfoServiceSoapClientという名前のクラス。
メソッドGetHostedDevicesおよびGetDeviceInfoは使用できなくなりました。 GetDeviceInfoRequest、GetDeviceInfoRequestBody、GetDeviceInfoResponse、GetDeviceInfoResponseBodyのみを取得します。
これら4つのクラスの使用方法をGoogleで調べましたが、何も見つかりませんでした。 ASP.NETのように、これら2つのクラスを直接取得し、それらの要求応答タイプを使用しないようにします。
解決
ASP.NETのWeb参照とは、Silverlightのサービス参照と同等です。
SilverlightでWebサービスを使用する方法の例を次に示します。 CDYNE冒Proフィルター。
プロジェクトに新しいサービス参照を追加します。URLは http:// wsです。 .cdyne.com / ProfanityWS / Profanity.asmx?wsdl 、名前をServiceReference1のままにします。
このコードビハインドを使用して、サービスを呼び出します(非同期に実装されています):
public MainPage()
{
InitializeComponent();
string badText = "I wonder if the filter will filter this out: shit bad luck";
ServiceReference1.ProfanitySoapClient client = new ServiceReference1.ProfanitySoapClient();
client.ProfanityFilterCompleted += new EventHandler<ServiceReference1.ProfanityFilterCompletedEventArgs>(client_ProfanityFilterCompleted);
client.ProfanityFilterAsync(badText, 0, false);
}
void client_ProfanityFilterCompleted(object sender, ServiceReference1.ProfanityFilterCompletedEventArgs e)
{
string cleanText = e.Result.CleanText; // Web service callback is here
}
そして、SilverlightでWebサービスを立ち上げて実行しています!
他のヒント
いくつかの概念については非常に混乱しているように聞こえます。
次のSilverlight.Netビデオを見て、それが役立つかどうかを確認してください。 方法SilverlightでWCFおよびASP.NET Webサービスを使用する方法