问题标签 [asynccontroller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - AsyncController 如何避免使用 ASP.NET 工作线程?
究竟如何AsyncController
避免使用 ASP.NET 工作线程?如果我使用基于事件的模式(伪代码):
...然后根据Clay Lenharts的说法,它不使用 ASP.NET 工作线程。这怎么可能?
我看了一点AsyncController
源代码,但什么都不懂,除了它使用了IAsyncResult
很多并且QueueUserWorkItem
在某些地方确实如此。
但是如何使用BeginInvoke
和QueueUserWorkItem
不使用 ASP.NET 工作线程呢?当然这两个都使用线程池线程,并且肯定在 ASP.NET 工作进程中只有一个线程池?
根据 MSDN,
Web 服务器从线程池中获取一个线程(工作线程)并调度它来处理传入的请求。该工作线程启动异步操作。
工作线程返回到线程池以服务另一个 Web 请求。
当异步操作完成时,它会通知 ASP.NET。
但是对于任何重要的事情,听起来启动异步操作仍然需要一个线程来运行。只有在极其简单的情况下(例如使用 BCL 下载 Web 内容)才会完全展开和/或完全 IOCP 绑定,对吗?
我之所以这样问,部分原因是我看到所有这些聊天服务器都是使用实现的AsyncController
,如果他们所做的只是“等待新消息”,我不明白如何在非线程池线程上完成。
jquery - ASP.NET MVC AsyncController 在等待时继续浏览
我想使用 jQuery ajaxForm 将数据发布到 AsyncController 以启动某些任务。我希望用户能够在此任务完成时继续浏览其他页面。然后,我想在任务完成后使用类似jGrowl的东西显示状态消息。
有人认为这是可能的吗?
第一个问题,退出调用xxxAsync的页面时,回调动作xxxCompleted会触发吗?
第二个问题,您将如何检索从 xxxCompleted 返回的 JsonResult 以显示在 UI 中(例如通过 jGrowl)?
asp.net-mvc-3 - MVC3 - 使用 AsyncController 从数据库预填充 ObjectCache
我有一个通过 AJAX 搜索两个不同数据源的表单。数据比较小,但是返回的速度比较慢。
我构建了一个缓存层来存储第一次查询后的完整结果......但是,我想在用户执行搜索之前用数据填充缓存。
我应该查看AsyncController来执行此操作吗?有什么建议吗?
我想要的行为是(更新):
- 用户请求某个控制器的任何 ActionABC(不一定是搜索操作)
- 服务器端,该操作检查缓存并在为空时异步请求数据
- 当缓存继续在服务器上填充时,ActionABC 返回请求的视图
- 如果用户随后在填充缓存时执行搜索,他们的请求将等待直到缓存填充完成,否则缓存数据立即可用
asp.net-mvc - 同一控制器中的异步和同步操作方法
是否可以在 中具有异步和同步操作方法AsyncController
?这样做有什么缺点吗?
原因是异步操作对耗时操作有意义,但对于返回 HTML 表单没有意义。
例如,我有一个生成文件的页面。使用输入返回表单的操作方法几乎没有逻辑,但是接收 POST、将其发送到另一个 Web 服务并中继响应的操作方法需要一些时间,因此异步执行它是有意义的。
我可以将这些方法放在单独的控制器中,一个同步的,另一个同步的,但我想将它们放在一起。
干杯。
asp.net-mvc-3 - 如何在 asp.net MVC 3 中使用 AsyncController?
搜索几个关于它的博客,但总是相同的例子。
我不知道是否误解或不知道使用但在使用 AsyncController 时看不到并行进程。
进行了以下测试
创建一个 Asp.net MVC 类型的新项目
家庭控制器.cs
总是延迟 20 秒浏览网站!
我正在考虑使用 PartialView AsyncController 来执行此任务。工作?
asp.net-mvc - 在 AsyncController 的 Async 方法中等待或不等待
我已经在 mvc 控制器中看到了两种使用异步操作的方式。
第一的:
第二:
第一个为 SomeNumberOfSecondsToWait 阻止 GetNewsAsync,第二个没有。两者都在工作线程中执行工作,并将结果传递给 GetNewsCompleted。
所以我的问题是,这是处理对 GetNews 的 Ajax 调用的正确方法;等,还是不等?
asp.net-mvc - 是否可以同时拥有同名的 GET 和 POST 异步控制器操作?
是否可以有一个具有相同名称的 GET 和 POST 操作的 AsyncController?
当我尝试这个时,我得到了一个错误:
Lookup for method 'IndexCompleted' on controller type 'HomeController' failed because of an ambiguity between the following methods:
System.Web.Mvc.ActionResult IndexCompleted() on type Web.Controllers.HomeController
System.Web.Mvc.ActionResult IndexCompleted(System.Int32) on type Web.Controllers.HomeController
是否可以让它们以任何方式共存,或者每个异步操作方法都必须是唯一的?
c# - MVC 4 中的异步控制器子操作
如果我从普通控制器的视图中调用上述动作,会发生什么?例如
鉴于我对异步控制器是如何实现的理解,我可以想象 4 个场景。
它将出错,因为父控制器需要一个 ActionResult。
它将随机出错,因为该操作是异步的,并且父级可能已调用 HttpResponse.End()
Mvc 框架很聪明地意识到,子动作正在返回一个任务,因此父控制器将继续执行,然后在调用 Response.End( )
Mvc 框架会将父操作提升为异步线程,序列化响应信息并将其存储起来,当异步任务发出信号时,将其重新水化并恢复操作。
对框架有更好理解的人能否描述幕后发生的事情并告诉我,如果有一个异步子动作是否有意义?
asp.net-mvc-3 - 使用 AsyncController 处理超时的最佳方法
我的 MVC3 项目中有很长时间轮询控制器。它的超时设置为 30 秒。我有一个处理所有错误记录的 HandleErrorAttribute 实现。
由于 timout 引发 TimeoutException,这意味着这些将显示在日志中。
我需要在我的 HandleErrorAttribute 类得到它之前拦截这个错误并返回一个 json 对象而不是 500 错误页面。最好的方法是什么?
我这样做了,它有效
最好的方法?
asp.net-mvc-3 - 超时时从异步控制器中删除事件侦听器
我的 MVC3 异步控制器有问题,当控制器异步方法运行时,我增加异步控制器并开始监听 backednd 事件
然后当后端事件触发时,我减少并取消订阅后端事件
这可行,但是如果控制器超时,则 eventAggregator 将持有对控制器的订阅(它是一个 Weakrefence 列表,但由于某种原因旧控制器没有被删除)并且当后端事件触发时,旧控制器将首先窃取事件并将事件出列这意味着当真正的控制器收到消息时,队列为空并且没有任何内容发送到视图,这也是内存泄漏,所以几分钟后我们将在弱引用列表中有很多控制器......我如何取消订阅超时时来自 eventtaggregator 的控制器?
编辑:事件聚合器的代码,我们对此代码进行了单元测试,证明没有内存泄漏。奇怪的是,如果我创建一个没有任何引用的空标准控制器,它的解构器也不会运行......我们使用 IoC(Ninject)会是问题吗?