0

我正在尝试测试具有带有登录凭据的代理的客户的用例,尝试从我们的客户使用我们的网络服务。

如果请求是同步的,我的工作很简单。捕获 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 回答