问题标签 [ihttpasynchandler]

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.

0 投票
1 回答
6417 浏览

c# - Using an IHttpAsyncHandler to call a WebService Asynchronously

Here's the basic setup. We have an ASP.Net WebForms application with a page that has a Flash application that needs to access an external Web Service. Due to (security I presume) limitations in Flash (don't ask me, I'm not a Flash expert at all), we can't connect to the Web Service directly from Flash. The work around is to create a proxy in ASP.Net that the Flash application will call, which will in turn call the WebService and forward the results back to the Flash application.

The WebSite has very high traffic though, and the issue is, if the Web Service hangs at all, then the ASP.Net request threads will start backing up which could lead to serious thread starvation. In order to get around that, I've decided to use an IHttpAsyncHandler which was designed for this exact purpose. In it, I'll use a WebClient to asynchronously call the Web Service and the forward the response back. There are very few samples on the net on how to correctly use the IHttpAsyncHandler, so I just want to make sure I'm not doing it wrong. I'm basing my useage on the example show here: http://msdn.microsoft.com/en-us/library/ms227433.aspx

Here's my code:

Now this all works, and I THINK it should do the trick, but I'm not 100% sure. Also, creating my own IAsyncResult seems a bit overkill, I'm just wondering if there's a way I can leverage the IAsyncResult returned from Delegate.BeginInvoke, or maybe something else. Any feedback welcome. Thanks!!

0 投票
1 回答
229 浏览

asp.net - 为什么发生异常时异步处理程序正在循环?

我有这个处理程序。我在内部类的“StartTransfer”方法中发生了一个异常(我已经标记了该点),并且由于我不知道它循环这个方法的原因。为什么它会循环并且不只是在异常消息中响应?

0 投票
1 回答
1188 浏览

c# - 何时使用 System.Threading.ThreadPool 以及何时使用众多自定义线程池之一?

我正在为 ASP.NET 创建一个异步处理程序,它将执行一个缓慢的存储过程。我想我明白,要在慢速和快速页面的混合负载上获得额外的吞吐量,慢速页面需要在与 ASP.NET 使用的线程池分开的线程池上执行,否则异步模式将导致双倍的数量要使用的稀有线程(如果我错了,请纠正我)。

所以我发现System.Threading.ThreadPool- 看起来它应该可以解决问题,但是......

网络上的各种教程,例如使用此定义池的教程,John Skeet 的 MiscUtils中的教程,以及本教程中引用的有关异步模式的自定义线程池。

System.Threading.ThreadPool自 1.1 以来就存在 - 为什么人们经常觉得有必要编写一个全新的?我应该避免使用System.Threading.ThreadPool吗?

在线程方面,我是一名初级初学者,所以请轻松使用未定义的行话。

更新。要执行的存储过程不一定是 MS-SQL,也不一定能够使用内置的异步方法,例如BeginExecuteNonQuery().

0 投票
1 回答
787 浏览

silverlight-4.0 - Internet Explorer 9 Silverlight 4 内存泄漏

我们正在将视频从实现 IHttpAsyncHandler 的 ashx 流式传输到 Silverlight 客户端。

在客户端,异步处理程序正在 MediaStreamSource 的实现中使用。

它在最新的 Firefox、chrome 和 Internet Explorer 8 中运行良好。

但是在 Internet Explorer 9 中,我们看到了内存泄漏。我一直在使用 umdh 来调试内存,并找到了一个调用堆栈,它在内存转储之间使用了 127mb。所以我想我已经把它缩小到这个调用堆栈。

但现在我不知道现在继续我的调试。这是 umdh 信息:

首先是第一次和第二次的比较

第二次运行调用栈

0 投票
6 回答
11915 浏览

asp.net - 在 IHttpAsyncHandler 中使用 Task 或 async/await

自从我想添加线程开始编写 ASP.NET 应用程序以来,有 3 种简单的方法可以在我的 ASP.NET 应用程序中完成线程:

  • 使用System.Threading.ThreadPool.
  • 使用自定义委托并调用其BeginInvoke方法。
  • 在类的帮助下使用自定义线程System.Threading.Thread

前两种方法提供了一种为您的应用程序启动工作线程的快速方法。但不幸的是,它们会损害应用程序的整体性能,因为它们使用 ASP.NET 用来处理 HTTP 请求的同一池中的线程

然后我想用一个新的 Task 或者 async/await 来写IHttpAsyncHandler. 你可以找到一个例子是 Drew Marsh 在这里解释的:https ://stackoverflow.com/a/6389323/261950

我的猜测是,使用 Task 或 async/await 仍然会消耗 ASP.NET 线程池中的线程,并且出于明显的原因我不想要。

您能否告诉我是否可以在后台线程上使用 Task (async/await),例如使用System.Threading.Thread而不是线程池

在此先感谢您的帮助。

托马斯

0 投票
1 回答
549 浏览

c# - IHttpAsyncHandler 和 Request.Filter

我正在尝试使用 IHttpAsyncHandler 在请求管道中注入解码过滤器,但发现 Request.Filter 属性被忽略。

有没有人成功使用 Request.Filter 和 IHttpAsyncHandler ?

编辑:我找到了另一种不涉及 Request.Filter 的好方法,粘贴在下面。然而,令人费解的是 Request.Filter 根本不起作用。仅供参考,我的用例是在调用 3rd-party RequestHandler 之前进行 URL 解码。

0 投票
1 回答
512 浏览

asp.net - Comet 与 ASP.NET AsyncHttpHandlers

我正在我当前的 asp.net 应用程序中使用 AsyncHttpHandlers 实现彗星。根据我的实现,客户端最初在 AsyncHttpHandler 上向服务器(及其用户 ID)发送通知挂钩请求,在服务器端,我维护用户 ID(键)和 IAynsResult(值)的全局(应用程序级别)字典。因此,当收到向用户发送通知的请求时,我只需从全局字典中选择匹配的 IAsyncResult 并将响应发送给客户端用户。

我担心的是,在应用程序级别维护用户 ID 和 IAsyncResult 的字典是一个好的设计吗?我觉得在高流量时它会给服务器带来很多负载。有没有其他方法可以实现彗星。或者在高流量场景中实现彗星的好的设计是什么。

0 投票
3 回答
1544 浏览

asp.net - 如何设置 IHttpAsyncHandler 超时?

我试图在 web.config 文件中设置 executionTimeout:

查看 IIS 管理器请求页面,我可以看到请求在 30 秒后没有被终止。
我应该在 IHttpAsyncHandler 中实现 Timer 吗?

0 投票
2 回答
3085 浏览

javascript - Node.Js 与 HttpAsync (asp.net)

在阅读了很多关于 nodejs 的内容后,我仍然问自己:

与 asp.net HttpAsync 请求相比有什么好处?

唯一的限制(如我所见)是限制的并发请求数IIS

我试图画出我目前对它的理解:

在此处输入图像描述

有什么帮助吗?

  • 有什么异步操作.net/ado.net 不能做的nodejs可以吗?
0 投票
1 回答
1959 浏览

c# - 回调中的“对象引用未设置为对象实例”错误

我正在使用 IHttpAsyncHandler 和 XMLHTTPRequest 在以下 URL 的帮助下将消息推送到客户端:http: //www.codeproject.com/Articles/42734/Using-IHttpAsyncHandler-and-XMLHttpRequest-to-push 但实际上我做了一些更改此示例仅基于一个客户端,我必须向多个客户端发送消息,因此我进行了这些更改

错误快照

现在我有两个问题

  1. 如何解决此类错误?这不是永久性错误,它是随机发生的。

  2. W3wp.exe 中异步线程的限制是什么,当它超过 25 个请求时,它无法打开下一个请求,我必须重置 IIS 才能重新启动应用程序。