小编Gra*_*tts的帖子

从ASMX调用基于任务的方法

我有一个最近的经验,我想分享这可能对任何必须维护必须更新以调用基于任务的方法的旧ASMX Web服务的人有所帮助.

我最近一直在更新一个ASP.NET 2.0项目,其中包括一个传统的ASMX Web服务到ASP.NET 4.5.作为更新的一部分,我介绍了一个Web API接口,以允许应用程序的高级自动化.ASMX服务必须与新API共存才能实现向后兼容.

该应用程序的一个功能是能够代表呼叫者从外部数据源(工业工厂历史记录,定制Web服务等)请求数据.作为升级的一部分,我重新编写了数据访问层的大部分内容,以使用基于任务的异步模式异步请求数据.鉴于在ASMX服务中不可能使用aync/await,我修改了ASMX方法以对异步方法进行阻塞调用,即调用基于任务的方法,然后使用Task.WaitAll阻塞线程,直到任务完成.

当调用任何正在调用返回任务或任务<T>的方法的ASMX方法时,我发现请求总是超时.当我逐步完成代码时,我可以看到异步代码已成功执行,但对Task.WaitAll的调用从未检测到任务已完成.

这引起了一个令人头痛的问题:ASMX服务如何能够与新的异步数据访问功能共存?

c# asmx task-parallel-library asp.net-web-api

11
推荐指数
2
解决办法
5397
查看次数

标签 统计

asmx ×1

asp.net-web-api ×1

c# ×1

task-parallel-library ×1