【问题标题】:Getting an Exception while calling some async methods from outside the class从类外部调用一些异步方法时出现异常
【发布时间】:2015-03-17 19:18:20
【问题描述】:

假设我有这样的类 x 和 y

class x
{
    public x()
    {
         p();
    }
    private async p()
    {
      await q();
    }
    private async p()
    {
     //some logic is there  
    }
}

在 test.aspx.cs 文件中

我正在尝试创建此类的实例

            x object =new x();

当我运行这个时,我在运行时得到一个异常说:

此时无法启动异步操作。异步操作只能在异步处理程序或模块内或在页面生命周期中的某些事件期间启动。如果在执行页面时发生此异常,请确保将页面标记为 。此异常还可能表示尝试调用“async void”方法,在 ASP.NET 请求处理中通常不支持该方法。相反,异步方法应该返回一个任务,调用者应该等待它。

谁能解释我为什么?

【问题讨论】:

  • 您是否按照消息中的说明将该页面标记为异步? (以及异常的类型是什么?)
  • 代码好像不是ASP.NET,但错误信息是。你怎么称呼这段代码?
  • @Richard 不,事实上我没有,而且我什至不知道如何操作,因为我是新手(全新//今天才开始)
  • 阅读异常的文本:它告诉你如何。
  • @Patrick Hofman 是的,你实际上是在写我正在写一个包装类之类的东西,它将在 asp.net 页面中使用......上面的代码只是为了描述我的情况......我对问题进行了一些修改

标签: asp.net .net c#-5.0


【解决方案1】:

我找到了解决方案(即我按照@Richard 给出的说明进行操作)

并将Async="true" 添加到我的页面标签(看起来像这样的<%@ Page %>)的aspx页面中

它成功了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-01
    • 2018-10-29
    • 2018-12-06
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多