WebAPI上传必须是异步的吗?

3

我一直在网上和StackOverflow上阅读关于ASP.NET WebAPI文件上传的内容。

我看到的所有问题(直接或间接地)都涉及使用异步上传的MSDN文章示例

这是处理文件上传的事实标准方法吗?文件上传到WebAPI必须使用Task<>async吗?

1个回答

2
一个朋友刚问了我这个问题,简短的答案是:是的……但有一些限制。
相关的 API 是由 https://msdn.microsoft.com/en-us/library/system.net.http.httpcontentmultipartextensions(v=vs.118).aspx 上定义的扩展方法提供的。我已经找了一些同步版本的这些方法,但没有找到。
显然,ReadAsMultipartAsync<T> 的返回值是一个 Task<T>,你可以调用 Wait() 来强制同步。然后,你就可以在控制器中的方法声明上省略异步关键字了。
我还没有尝试过,所以也许它有效,也许不行——虽然没有明显的原因说明它不行。
我想我应该问的问题是:既然微软正在努力推动开发者走异步路线,为什么你想要实现同步上传呢?(虽然这并不一定在所有情况下都是好的或合适的。)

1
这是正确的,异步通常不会改变语义。它只会改变操作的启动和完成方式。 - usr
1
不要考虑被“强制”,这几乎是一个异步操作的必然情况。你为什么还想做其他的呢? - Jon Hanna
1
嗯...虽然我有时会使用异步,但我并不喜欢它。在这种情况下,它似乎并不是一个坏的解决方案,但我很好奇为什么SuperUser想要走同步路线。最终,我们决定坚持使用异步,因为对于我们的情况,我们看不到不使用它的理由。 - Bart Read

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接