我正在尝试测试具有登录凭据的代理的客户的用例,尝试使用我们客户的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方法也没有调用它的回调。我错过了某种配置吗?
答案 0 :(得分:0)
我后来发现问题出在我的代理服务器上,而不是代码。切换到不同的代理服务器,以及不使用基本身份验证(无论如何使用它?),我能够得到我的回调。
答案 1 :(得分:0)
我有同样的问题。现在我只是实例化一个计时器并在那里进入断开状态。