SignalR - 如何在集线器中执行异步任务?

2024-01-10

我正在尝试使用 C# 5 async/await 功能创建 SignalR 应用程序,但每当运行代码时,它都会抛出 System.InvalidOperationException。这是重现该问题的最简单的代码。

public class SampleHub : Hub
{
    public Task<string> GetGoogle()
    {
        var http = new WebClient();
        return http.DownloadStringTaskAsync("http://www.google.com");
    }
}

异常详细信息:

此时无法启动异步操作。异步操作只能在异步处理程序或模块内启动,或者在页面生命周期中的某些事件期间启动。如果在执行页面时发生此异常,请确保该页面被标记为 。

堆栈跟踪:

at System.Web.AspNetSynchronizationContext.OperationStarted()
at System.Net.WebClient.DownloadStringAsync(Uri address, Object userToken)
at System.Net.WebClient.DownloadStringTaskAsync(Uri address)
at System.Net.WebClient.DownloadStringTaskAsync(String address)

在客户端,Javascript 看起来像这样。

$.connection.hub.start().done(function () {
    $('#google').click(function () {
        var google = sample.server.getGoogle();
        console.log(google);
    });
});

我做错了什么?有什么解决方法吗?如果可能的话,我真的很热衷于坚持 C# 中的异步/等待模式。


我会尝试更换WebClient with HttpClient. The DownloadStringTaskAsync是一种“补充”支持async超过现有的EAP http://msdn.microsoft.com/en-us/library/ms228969.aspx方法,而 SignalR 所反对的是 EAP 方法。HttpClient uses TAP http://msdn.microsoft.com/en-us/library/hh873175.aspx直接地。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SignalR - 如何在集线器中执行异步任务? 的相关文章

  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • OpenGL:如何检查用户是否支持glGenBuffers()?

    我检查了文档 它说 OpenGL 版本必须至少为 1 5 才能制作glGenBuffers 工作 用户使用的是1 5版本但是函数调用会导致崩溃 这是文档中的错误 还是用户的驱动程序问题 我正在用这个glGenBuffers 对于VBO 我如
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 来自嵌入图像的 BitmapSource

    我的目标是在 WPF 窗口上重写 OnRender 方法中绘制图像 someImage png 它是嵌入资源 protected override void OnRender System Windows Media DrawingCont
  • LinkLabel 无下划线 - Compact Framework

    我正在使用 Microsoft Compact Framework 开发 Windows CE 应用程序 我必须使用 LinkLabel 它必须是白色且没有下划线 因此 在设计器中 我将字体颜色修改为白色 并在字体对话框中取消选中 下划线
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • 当Model和ViewModel一模一样的时候怎么办?

    我想知道什么是最佳实践 我被告知要始终创建 ViewModel 并且永远不要使用核心模型类将数据传递到视图 这就说得通了 让我把事情分开 但什么是Model 和ViewModel一模一样 我应该重新创建另一个类还是只是使用它 我觉得我应该重
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • 调用 .ToArray() 时出现 ArgumentException

    我有一个经常被清除的列表 代码完全是这样的 VisitorAgent toPersist List
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 如何从 Windows Phone 7 模拟器获取数据

    我有一个 WP7 的单元测试框架 它在手机上运行 结果相当难以阅读 因此我将它们写入 XDocument 我的问题是 如何才能将这个 XML 文件从手机上移到我的桌面上 以便我可以实际分析结果 到目前为止 我所做的是将 Debugger B
  • 如何获取带有某个属性注释的所有属性?

    我刚刚从 Roslyn 开始 我想找到所有用属性名称 OneToOne 注释的属性 我启动了 SyntaxVisualizer 并能够获取对该节点的引用 但我想知道是否有更简单的方法来实现此目的 这就是我所拥有的 var prop docu
  • 任何人都可以清楚地告诉如何在不使用像 这样的预定义函数的情况下找到带有小数值或小数值的指数吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 例如 2 0 5 1 414 所以想要 我是 c 的新手 所以请解释简单的逻辑 如果不是复杂的逻辑也足够了 在数学中 从整数取幂到实数
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • 从后面的代码添加外部 css 文件

    我有一个 CSS 文件 例如 SomeStyle css 我是否可以将此样式表文档从其代码隐藏应用到 aspx 页面 您可以将文字控件添加到标头控件中 Page Header Controls Add new System Web UI L

随机推荐

  • 了解如何在没有 C# Cmdlet 定义的情况下将详细或调试字符串消息写入 PowerShell 运行空间

    我有一个 C 类库 它提供了许多可以从 PowerShell 脚本 PS1 和高级模块 PSM1 调用的接口 我有一个静态方法可以使用以下命令将详细消息和调试消息写入控制台System Console class public class
  • 基于 geom_map 或 ggplot2 中的列联表 (2x2) 创建唯一的图例?

    我该如何根据这个列联表来做到这一点 我不完全确定如何根据我制作的指标表 犯罪 在 R 中创建自定义图例 R 中的可重现代码 require maps set seed 123 randomly assign 2 variables to e
  • 如何在MAUI中设置ContentPage全屏(或沉浸式)?

    是否有一个属性可以设置页面全屏显示 在 Xamarin 中 可以为 Android 等设置沉浸式模式 对于Maui项目 不需要再次在ContentPage中设置全屏 在 Android 中设置全屏也可以 您可以在 Maui 项目的 Main
  • iOS 模拟器上缺少语言

    当我运行我的应用程序时 我的 iPhone iPad 模拟器只提供 6 种语言选择 英语 德语 日语 意大利语 西班牙语和匈牙利语 在 Google 上搜索后 似乎应该至少有 18 种语言可供选择 我重新安装了 Xcode 4 3 1 并安
  • 切换到异步网络 API,例如 URLSession

    这是什么意思 我尝试了这个 仍然 它给了我同样的信息 DispatchQueue main async if let imageData try Data contentsOf url self image UIImage data ima
  • 默认 cakephp 库翻译的 .po 文件

    如何将 cakephp 库文件的翻译添加到 default po 文件例如 月份名称 日期的名称 过去的时间 我尝试手动将字符串添加到default po但每次我从default pot更新它 使用poedit 琴弦不见了 请帮我解决它可以
  • Bigquery - 提取包含表情符号的 json 字段?

    在我的 BQ 数据库表中 我有一列名为payload其中包含原始 facebook webhooks JSON 有效负载作为字符串 其中一个包含带有表情符号的文本 例如Sample 在大查询中它看起来像 object page entry
  • 从各种来源选择商品,并按日期订购

    我想实现以下目标 但遇到困难 1 从两个查询 item title 或 item keywords 之一中选择一个项目 从某种意义上说 当用户搜索时 它将查看是否在 item title 或 item keywords 中找到该项目 2 按
  • 获取隐藏列时的最后一个列号

    我需要获取第二行的最后一个列号 而引用的列是隐藏的 如果隐藏最后一列 下面的代码将输出错误的结果 Sub Last column number even is hidden Dim ws As Worksheet lastCol n As
  • 从同一编译单元覆盖 C 中的函数调用

    我在尝试着重写 C 中的函数调用 https stackoverflow com questions 617554 override a function call in c 但是当该函数在同一编译单元中使用时 我遇到了问题 在下面的代码中
  • MBProgressHUD 和 UITableView

    我在填充 TableView 时显示 HUD 但它似乎显示在 TableView 后面 表视图分隔符破坏了 Hud 这是 TableViewController 中的代码 void viewDidLoad super viewDidLoad
  • 删除createMediaElementSource

    我已经用谷歌搜索了这个问题 但找不到任何东西 我现在的情况需要删除source createMediaElementSource这样我就可以再次创建它 我正在使用音频分析器 每次使用 ajax 加载指定曲目时都必须加载该分析器 一旦您转到另
  • 如何定义一个返回其自身类型的 Rust 函数类型?

    我正在学习 Rust 并且仍然非常努力地理解它 考虑以下 Go 定义 type FnType func paramType FnType 它只是一个返回相同类型的函数的函数 Rust 中可以实现类似的功能吗 而且 理想情况下 它可以通用地完
  • 抽象类中内部抽象方法的目的是什么?

    抽象类中内部抽象方法的目的是什么 为什么要在抽象类中创建一个内部抽象方法 如果我们想限制程序集外部的抽象类 为什么我们不直接创建抽象内部类 背后是否还有其他逻辑 Adding internal的成员public抽象类使得不可能继承它abst
  • 是否可以使用 pyscript 在浏览器上运行 pygame 制作的游戏?

    我使用 pygame 制作了一个小型太空入侵者游戏 我想知道是否可以使用 pyscript 在浏览器上玩它 这可能吗 我必须重写所有内容吗 不 PyScript 目前不支持 Pygame 我不确定找出哪些软件包的最佳方法是什么are支持 但
  • 无法授权 Azure LogAnalytics 工作区

    I am trying to connect to my workspace in the Azure Portal I am getting the error as 操作返回无效状态代码 未经授权 creds 对象已获取身份验证令牌 并
  • 隐藏用户输入

    我正在尝试获取一个既可以在本机 Windows shell 中也可以在 cygwin shell 通过 ssh 中运行的脚本 该脚本会提示并读取用户输入的密码 到目前为止 我已经尝试过以下方法 using Term ReadKey and
  • .wav 文件中的字节代表什么?

    当我将 wav 文件中的数据存储到字节数组中时 这些值意味着什么 我读到它们采用两字节表示形式 但是这些两字节值中到底包含什么 您可能听说过 音频信号是由某种波表示的 如果您曾经见过带有上下直线的波形图 这基本上就是这些文件中的内容 看看这
  • Laravel/Heroku,会话没有这样的文件或目录

    我正在尝试在 heroku 上运行我的应用程序 但对于某些请求 只有 POST GET 工作正常 我的 Ajax POST 请求出现以下错误 Error Request failed with status code 419 当我检查 He
  • SignalR - 如何在集线器中执行异步任务?

    我正在尝试使用 C 5 async await 功能创建 SignalR 应用程序 但每当运行代码时 它都会抛出 System InvalidOperationException 这是重现该问题的最简单的代码 public class Sa