问题标签 [ihttphandler]
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.
.net - 为什么 IHttpAsyncHandler 在负载下会泄漏内存?
我注意到 .NET IHttpAsyncHandler(和 IHttpHandler,在较小程度上)在受到并发 Web 请求时会泄漏内存。
在我的测试中,Visual Studio Web 服务器 (Cassini) 的内存从 6MB 跃升至 100MB 以上,并且一旦测试完成,就没有一个内存被回收。
问题很容易重现。使用两个项目创建一个新的解决方案 (LeakyHandler):
- 一个 ASP.NET Web 应用程序 (LeakyHandler.WebApp)
- 控制台应用程序 (LeakyHandler.ConsoleApp)
在 LeakyHandler.WebApp 中:
- 创建一个实现 IHttpAsyncHandler 的名为 TestHandler 的类。
- 在请求处理中,做一个简短的 Sleep 并结束响应。
- 将 HTTP 处理程序作为 test.ashx 添加到 Web.config。
在 LeakyHandler.ConsoleApp 中:
- 生成大量 HttpWebRequest 到 test.ashx 并异步执行。
随着 HttpWebRequests (sampleSize) 数量的增加,内存泄漏变得越来越明显。
LeakyHandler.WebApp > TestHandler.cs
LeakyHandler.WebApp > Web.config
LeakyHandler.ConsoleApp > Program.cs
调试更新
我使用 WinDbg 查看转储文件,一些可疑类型被保存在内存中并且从未释放。每次我以 10,000 的样本大小运行测试时,我最终都会在内存中保存 10,000 多个这样的对象。
System.Runtime.Remoting.ServerIdentity
System.Runtime.Remoting.ObjRef
Microsoft.VisualStudio.WebHost.Connection
System.Runtime.Remoting.Messaging.StackBuilderSink
System.Runtime.Remoting.ChannelInfo
System.Runtime.Remoting.Messaging.ServerObjectTerminatorSink
这些对象位于第 2 代堆中并且不会被收集,即使在强制完全垃圾收集之后也是如此。
重要的提示
即使在强制顺序请求时存在问题,即使没有Thread.Sleep(10)
in ProcessRequest
,它也更加微妙。该示例通过使问题更加明显而加剧了问题,但基本原理是相同的。
c# - 无法解析 IHttpHandler
由于某种原因,当我尝试创建一个实现 IHttpHandler 的类时,我无法解析 IHttpHandler。
像这样的陈述:
也没有帮助。
这是一个类库项目,我在这里遵循示例:http ://www.15seconds.com/issue/020417.htm
我究竟做错了什么?
asp.net - IHttpHandler 和相对 URL 的问题
我开发了一个IHttpHandler
类并将其配置为verb="*" path="*"
,因此我正在使用它处理所有请求,以尝试为动态生成 html 的测试网站创建我自己的 REST 实现。
因此,当对 .css 文件的请求到达时,我必须执行类似的操作context.Response.WriteFile(Server.MapPath(url))
……对于图片等,我必须自己响应所有内容。
我的主要问题是当我将相对 URL 放入锚点时;例如,我有一个带有这样链接的主页<a href="page1">Go to Page 1</a>
,而在第 1 页我有另一个链接<a href="page2">Go to Page 2</a>
。第 1 页和第 2 页应该处于同一级别 (http://host/page1
和http://host/page2
,但是当我单击转到第 2 页时,我在处理程序中得到了这个 url:~/page1/~/page2
... 什么是痛苦,因为我必须做一个 url = url .SubString(url.LastIndexOf('~')) 用于清理它,虽然我觉得没有错,这种行为是完全正常的。
现在,我可以应付它,但我认为将来这会让我有些头疼。我尝试使用 的信息设置所有带有绝对 URL 的链接context.Request.Url
,但这也很痛苦 :D,所以我想知道是否有更好的方法来做这些事情。
不要犹豫,给我非常明显的回应,因为我在 Web 开发方面还很新,可能我正在跳过一些关于 URL、Http 等的基本知识。
在此先感谢和亲切的问候。
javascript - 无法让 jQuery AutoComplete 与外部 JSON 一起使用
我正在开发一个需要 jQuery AutoComplete 的 ASP.NET 应用程序。目前,当我在 txt63 输入框中输入数据时没有发生任何事情(在你因为使用像 txt63 这样的名称而激怒我之前,我知道,我知道......但这不是我的电话:D)。
这是我的 JavaScript 代码
这是我的 HTTP 处理程序
我的 ASPX 页面的其余部分具有适当的控件,因为我使用的是旧版本的 jQuery 库。我正试图让它与新的一起工作,因为我听说“开发”CDN 将被淘汰。
任何帮助或指导将不胜感激。
.net - .net IHTTPHandler 流式处理 SQL 二进制数据
我正在尝试为流文件实现 ihttphandeler。文件可能是微小的缩略图或巨大的电影
存储在 sql server 中的二进制文件
我在网上查看了很多代码,但有些东西没有意义
是不是流式传输不应该逐个读取数据并将其移动到线上?
大多数代码似乎首先将整个字段从 mssql 读取到内存,然后使用流式传输进行输出写入
,实际上从磁盘逐字节(或缓冲块?)直接流式传输到 http 不是更有效吗?这是
我的代码到目前为止,但无法弄清楚sqlreader模式与流对象和写入系统的正确组合
结束使用结束使用结束子
请注意,此 sql 命令还会在查询的第二个字段中返回文件扩展名(pdf、jpg、doc ...)
非常感谢大家
编辑:
我设法找到更多代码,现在页面间歇性地显示。有时它会带来 pdf 文件,有时它
不能理解这里的模式
我认为主要问题是当请求来自不同的页面并且我点击“在新标签中显示”然后它从来没有工作过。当我“在新窗口中显示”时,它主要工作但并非总是如此。
顺便提一句。代码总是运行。永远不会中断或错误或类似的事情。它在每次请求时从头到尾都像一个好孩子一样运行,
有时 IE 会在很长一段时间后给我一条消息(来自新标签)“Adobe/Acrobat 阅读器有问题。请退出 Adobe Acrobat/Reader 并重试。”
怎么回事?
这是我当前的代码
非常感谢你
dll - 为什么这个类库 dll 没有从 app.config 获取信息
我正在开发一个自定义 HttpHandler,为此我编写了一个 C# 类库并编译为 DLL。
作为其中的一部分,我有一些我不想在应用程序中硬编码的目录位置,所以我试图把它放在我以前使用过的 app.config 中。
在此之前,只需构建app.config:
然后在如下代码中获取它:
但是当我编译它并将它放在 web 服务的 bin 文件夹中时,它一直为空shareDirectory
,可能是因为它找不到 app.config。那么如何确保包括在内,这样我就不必对我的目录位置进行硬编码?我注意到它基本上在编译后我们会得到 assembly.dll 和 assembly.dll.config 这是 app.config 文件,所以它肯定在 bin 文件夹中!
asp.net - ASP.Net HttpHandler ProcessRequest() 触发两次
我有一个奇怪的问题,我有一个 HttpHandler,它的 ProcessRequest() 事件触发了两次。
除了指向静态方法的指针外,我在课堂上没有其他任何东西,所以我迷路了。
我做了一些谷歌搜索无济于事,即使似乎有些人遇到了类似的问题:
代码:
c# - IHttpHandler 空会话(在某些服务器上)
我有一个实现 IRequiresSessionState 的 IHttpHandler。在大多数服务器上一切正常,但有两台服务器(一台 IIS 7.0 和一台 IIS 7.5)给我空会话。Aspx 页面在每台服务器上都很好。我已经搜索了几个小时,但没有找到与 IRequiresSessionState 无关的任何内容。
asp.net - 为什么我的 HttpHandler 被忽略了?
在 ASP.NET 应用程序中,我需要对发送的每个 CSS 文件进行一些更改。
所以我创建了一个 HttpHandler(在应用程序本身内部),添加:
到 Web.configsystem.web/httpHandlers
并像这样修改处理程序:
但是 CSS 文件仍然和以前一样,所以处理程序被忽略了。
我做错了什么?
asp.net - Ihttpmodule ,Ihttphandler .NET
我对 HttpModule 和 HttpHandler 有一些疑问请帮我澄清一下
1)在 HttpModule 我注意到方法 Init 只调用了一次。context_BeginRequest 和 context_EndRequest 等方法调用每个请求。是否保证模块 Init 将为不同的用户(或不同的请求)调用一次,而 BeginRequest 等每次都会为不同的用户(或不同的请求)调用?
2) Application_Start(global.asax) 是否有可能运行不止一次,因为可能有多个应用程序对象
3)由于应用程序对象可以不同(来自应用程序池)在这种情况下,不同用户之间如何共享应用程序数据?
4) 在 HttpHandler ProcessRequest 方法将调用每个请求(或每个用户)。
谢谢瑞图