C# · 12月 23, 2021

c# – Asp.net中的异步Web服务

如何在asp.net中设置异步Web服务?

我想调用web服务将一些数据发布到数据库,但我不关心响应是否失败或成功.

我只能使用.net 2.0或3.5,它可以是vb或c#.

解决方法 在visual studio中创建服务引用时,单击“高级…”按钮并选中“生成异步操作”.然后,您可以选择对Web服务进行异步调用.

以下是对公共Web服务的同步和同一异步调用的示例.

// http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdlusing(var wf = new WeatherForecasts.WeatherSoapClient()){ // example synchronous call wf.GetCityForecastByZIP(“20850”); // example asynchronous call wf.BeginGetCityForecastByZIP(“20850”,result => wf.EndGetCityForecastByZIP(result),null);}

调用BeginXxx并不对结果做任何事情可能很诱人,因为你不关心它.你实际上会泄漏资源.重要的是每个BeginXxx呼叫都与相应的EndXxx呼叫匹配.

即使你有一个调用EndXxx的回调,这是在线程池线程上触发的,并且一旦BeginXxx调用完成,它就可以自由完成调用BeginXxx的原始线程(它不等待响应).