0

ログイン資格情報を持つプロキシを使用して、クライアントから Web サービスを使用しようとしている顧客のユースケースをテストしようとしています。

リクエストが同期的であれば、私の仕事は簡単です。WebException をキャッチし、407 コードを確認して、ユーザーにログイン資格情報の入力を求めます。

ただし、非同期リクエストの場合、問題が発生しているようです。コールバックが呼び出されません! Wireshark トレースを実行したところ、実際に HTTP 407 エラーが返されていることがわかりました。そのため、何をすべきか当惑しています。

コールバックを設定してリクエストを開始するコードは次のとおりです。

TravelService.TravelServiceImplService svc = new TravelService.TravelServiceImplService();
svc.Url = svcUrl;
svc.CreateEventCompleted += CbkCreateEventCompleted;
svc.CreateEventAsync(crReq, req);

そして、WSDL を使用したときに生成されたコードは次のとおりです。

public void CreateEventAsync(TravelServiceCreateEventRequest CreateEventRequest, object userState) {
        if ((this.CreateEventOperationCompleted == null)) {
            this.CreateEventOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateEventOperationCompleted);
        }

        this.InvokeAsync("CreateEvent", new object[] {
                    CreateEventRequest}, this.CreateEventOperationCompleted, userState);
    }

    private void OnCreateEventOperationCompleted(object arg) {
        if ((this.CreateEventCompleted != null)) {
            System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
            this.CreateEventCompleted(this, new CreateEventCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
        }
    }

WS コードをデバッグすると、SoapHttpClientProtocol.InvokeAsync メソッドでさえコールバックを呼び出していないことがわかりました。ある種の設定がありませんか?

4

2 に答える 2

0

後で、問題はコードではなく、プロキシ サーバーにあることがわかりました。別のプロキシ サーバーに切り替えるだけでなく、基本的な認証でテストしていない (とにかく誰がそれを使用しますか?)、コールバックを取得できました。

于 2010-05-03T17:56:31.930 に答える
0

同じ問題がありました。ここで、タイマーをインスタンス化して、そこで切断された状態にします。

于 2010-07-29T06:44:48.350 に答える