【发布时间】:2016-08-21 20:42:45
【问题描述】:
我尝试将自定义 Web 处理程序从 Webforms 项目迁移到 MVC。它在那里运行良好并调用了 async ProcessRequest。
public class MyHandler : IHttpHandler
{
...
public async void ProcessRequest(HttpContext context)
{
...
但是,当我在 MVC 项目 ( /Content/MyHandler.ashx ) 中运行它时,出现以下错误:
此时无法启动异步操作。异步操作只能在异步处理程序或模块内或在页面生命周期中的某些事件期间启动。如果在执行 Page 时发生此异常,请确保将 Page 标记为 。此异常还可能表示尝试调用“async void”方法,在 ASP.NET 请求处理中通常不支持该方法。相反,异步方法应该返回一个任务,调用者应该等待它。
我尝试使 ProcessRequest 同步(我在方法定义中删除了“异步”并将所有异步调用从 await Method() 更改为 Method().Result,但这没有帮助,服务器只是永远加载页面。
我也尝试用IHttpAsyncHandler 替换IHttpHandler,但没有成功。
我还尝试在根目录和自定义文件夹中移动处理程序文件,结果是一样的。
请帮忙!
【问题讨论】:
-
您考虑过只使用控制器吗?对我来说似乎更简单..
-
不,因为它对我来说似乎更简单,我想使用我已经拥有的解决方案(请注意,它是一个相对较大的处理程序)
标签: asp.net asp.net-mvc asynchronous async-await ashx