2

NET4.0アプリケーションからこのWebサービスを利用する方法を探しています。

http://resultsservice.lottery.ie/ResultsService.asmx

いつものように、サービス参照をサービスに追加すると、プロキシが作成され、すべてが正常に見えますが、「GetResults」メソッドを呼び出すと例外がスローされます。

var service = new LotteryResultsServiceSoapClient("LotteryResultsServiceSoap");
var results = service.GetResults(DrawType.EuroMillions, 1);

オブジェクト参照がオブジェクト インスタンスに設定されていません。

サービスの他のメソッド(GetProjectedJackpot)が正常に機能しているため、まれです。サービス参照の代わりにWeb参照を追加しようとしましたが、驚くべきことに…正常に機能します。だから、多分私は何か間違ったことをしているのでしょう。

問題は、このアプリケーションをWindowsRTに移植したいので、Web参照を使用できないことです。また、メトロアプリケーションはWeb参照をサポートしていません。

4

1 に答える 1

1

Web 参照で生成されたプロキシには、発信 HTTP メッセージのヘッダーに User-Agent 値が含まれています。Service Reference で生成されたプロキシは、デフォルトではこの値を追加しません。幸いなことに、この動作は十分に文書化されています。

null オブジェクト例外は、Service Reference プロキシに User-Agent 値がないために発生しているようです。Web リファレンスによって入力される値は Mozilla/4.0 (互換性あり、MSIE 6.0、MS Web Services Client Protocol 4.0.30319.269) です。Charles Proxy を使用して、サービス リファレンスによって生成されたすべての送信 HTTP メッセージにこの値を追加すると、問題が解決することを確認できました。

WCF には、発信 SOAP メッセージと HTTP 要求を変更する方法がいくつか用意されています。これは、これらのソリューションのいくつかについて説明し、いくつかの優れたコード サンプルを含む非常に優れた記事です。

于 2012-09-18T15:27:29.120 に答える