我正在使用一个网址上的web服务。当我使用SoapUI进行测试时,我会立即得到响应(请参见下面的图像),并且我发送的请求数据已通过另一端。
因此,在我的C#应用程序中,我做了同样的事情,我使用了web服务wsdl并自动生成代理类。我创建一个基于代理类的请求,与我在SoapUI中使用和发送的请求数据完全相同。我证实,在另一端,他们成功地收到了我的数据,没有显示错误。
但是,我从未收到任何ID,过了一段时间,我就会得到这个异常:
错误:对“http://someURLWebservice.com/WSoperation”的HTTP请求已超过分配的超时00:00:59.9470000。分配给此操作的时间可能是较长超时的一部分。
我是不是漏掉了什么?我下载了WSDL并使用SoapUI生成了模拟服务,如果我在本地调用模拟web服务,我将立即获得正确的away.the ID。
这是我的代码:
string serverURL = Settings.Default.ExtensionServiceURL;
//Get Proxy class client
ext.ExtWSPortTypeClient client = new ext.ExtWSPortTypeClient();
EndpointAddress addr = new EndpointAddress(serverURL);
try
{
client.Endpoint.Address = addr;
Uri site = new Uri(serverURL);
client.Endpoint.ListenUri = site;
ExtensionData eData = new ExtensionData();
client.ChannelFactory.CreateChannel();
Console.WriteLine("Sending Locator Event Request to Web Service");
ext.locatorEventResponse1 resp = await client.locatorEventAsync(eData.GenerateLocatorEventRequest(ev));
}
catch (Exception ex)
{
Console.WriteLine("Error " + ex.Message);
}
finally
{
if (client != null)
{
((ICommunicationObject)client).Close();
}
}
发布于 2014-03-06 15:00:07
因此,我最终配置了Fiddler2,以嗅探我的SoapUI请求并将其与我的应用程序请求进行比较。在应用程序请求头中,我看到了以下内容:
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Host: engage.ext-inc.com
Content-Length: 1036
**Expect: 100-continue**
预期:100-继续不在SoapUI请求中,该请求成功发送并得到响应。考虑到这一点,我在Fiddler中使用了SoapUI请求,并在it...except上构建了一个新的基础,我输入了Expect:100-继续,猜猜怎么着,我没有收到响应。
当我读到这件事时,我偶然发现了这个链接
瞧,在进行web服务调用之前,将ServicePointManager.Expect100Continue = false;放入代码中,我会立即得到响应。
发布于 2014-03-05 05:29:50
在类似的情况下,我将从以下几个方面开始:
使用WCF客户端进行测试并捕获跟踪文件:
使用soapUI客户端进行测试并捕获Http日志
一旦您获得了两个客户端的跟踪信息,您就应该能够比较事务并希望确定问题的来源。特别是,我建议确认双方的服务地址,然后比较SOAP信封,以确保WCF绑定与soapUI设置一致。
此外,您还可以使用Fiddler查看web服务通信。下面的帖子提供了很好的参考链接。Fiddler与监控Web服务流量
希望这能有所帮助。
致以敬意,
发布于 2014-03-05 04:26:48
检查邮件配额设置,可能您的服务发送的内容比配置的要多。
https://stackoverflow.com/questions/22075608
复制相似问题