问题标签 [httphandler]
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.
c# - HTTP 处理程序问题
我在 web.config 文件中设置了一个 HTTP 处理程序:
并在我的网站根目录中有一个文件 SeoHandler.ashx,它指向 App_Code 文件夹中的 SeoHandler.ashx.cs(该网站不是 Web 应用程序项目)。
当我在本地运行该站点并输入“dork_test.aspx”之类的 URL 时,请求将被重定向到处理程序,然后由它处理业务。
但是当编译的站点在我的域上运行时,“dork_test.aspx”将导致:
“/”应用程序中的服务器错误。
无法找到该资源。
说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。
请求的 URL:/dork_test.aspx
为什么 SeoHandler 会在本地捕获“dork_test.aspx”请求,而不是在服务器上?
不确定这是否重要,但是当我在我的域上点击 URL SeoHandler.ashx 时,处理程序的工作方式就像它假设的那样。
网络主机是否可能有一些 IIS 设置忽略我的输入<httpHandlers>
?
html - 自定义图像处理程序:缓存策略
情景
我正在为通信应用程序构建自定义 CMS。用户可以将图像上传到服务器,然后在他们使用 Markdown 编写的帖子中引用它们。图像存储在数据库中,并以 url 形式引用images/{id}
。自定义图像处理程序检索这些并设置远期过期标头,因此不会一遍又一遍地获取它们。将图像存储在文件系统中不是每个客户的选择。
帖子以降价和 html 形式存储在数据库中以提高性能。
降价
HTML
问题
这些图像也是可编辑的。从缓存的角度来看,这提出了一个问题。编辑图像时,我需要确保浏览器获取最新版本。我提出了以下解决方案,我发现所有这些解决方案都缺乏。
可能的解决方案
版本字段
使用图像存储版本字段。当图像被编辑产生形式的 url 时增加它images/{id}/version/{version}
。
如果图像 url 总是从数据库生成,这很好。但是,我将 url 作为文本存储在帖子中,并且必须为这些请求预处理可能的大量文本。此外,链接图像会很麻烦,因为在编辑图像后 url 会变得陈旧。这可能不是一个好主意。
新网址
编辑图像时,将其作为新条目存储在数据库中。
这意味着没有版本维护,但旧链接和旧帖子会遇到同样的问题。他们永远不会更新。性能会很好,但问题仍然存在。
304 - 未修改
存储每个图像的最后编辑字段。当有条件请求返回时,返回 http 状态 304 - 未修改,减少带宽使用。
这似乎是迄今为止我得到的最好的解决方案。除非经过编辑,否则图像会被缓存,但我以前从未使用过这种方法。如果页面上有 50 张图像,则仍有 50 个请求向服务器发送。带宽将减少,但延迟仍然存在。这种方法值得付出这样的代价吗?
问题
我在这方面的经验很少,我希望你们所有人都有更多。上述任何解决方案是否可行?如果是这样,您对他们的体验如何?如果不是什么是更好的方法?
asp.net - httpmodules 和 httphandlers 之间的交互
在我们的 asp.net 2.0 应用程序中,我们使用 httpmodule 和 httphandler 通过 cookie 计算一些指标。为了计算网络传输时间,httpmodule:EndRequest 将 Transferstart 存储在 cookie 中,httphandler:Processrequest 使用 datetime.now 减去 transferstart 以确定整体网络时间。它是否正确?我也不清楚请求流程。它是这样的:request > HttpModule::OnStart > HttpModule::OnEnd > HttpHandler::ProcessRequest?
asp.net - 处理关联的 HttpModule 时不处理 HttpHandler
在我们的 asp.net 2.0 应用程序中,我们有一个 HttpModule 和 HttpHandler。它们在 web.config 中注册以处理对某些文件类型的请求。使用 MS AJAX 从客户端异步发起请求。我注意到一些奇怪的事情:没有在每个 HttpModule:EndRequest 上输入 HttpHandler:ProcessRequest,这似乎是不正确的行为,因为我对事件流的理解:HttpModule:BeginRequest > HttpHandler:ProcessRequest > HttpModule:EndRequest。由于某种原因,有时会跳过处理程序部分。这可能是什么原因造成的?
asp.net - 通过 HttpHandlers 和 HttpModules 陌生性在 asp.net 2.0 中测量网络性能
我们有一个依赖 HttpModule 和 HttpHandlers 的性能测量模块,其工作方式如下:
- 请求进入服务器以获取页面。
- HttpModule_Begin 在 cookie 中写入开始时间。
- HttpModule_End 在 cookie 中写入结束时间。
- 在客户端,页面加载完成后,通过 HttpHandler_ProcessRequest 处理的 AJAX 触发一个特殊请求
- 在 HttpHandler_ProcessRequest 中,从之前的 HttpModule_End(存储在 cookie 中)写入的结束时间中减去 DateTime.Now 并将其存储在数据库中。我忘了提一件事:所有数据都是通过 cookie 共享的,所以 HttpHandler 只是从 cookie 中提取数据而没有任何会话 id 等……所有参与者都在同一个时区。
此过程在大多数情况下都可以正常工作,但有些情况会报告网络时间超过一个小时!这表明在写入结束时间和触发 AJAX 请求之间经过了非常长的时间,或者从触发 AJAX 请求到它到达应用服务器的时间之间经过了很长的时间。我试图弄清楚是什么导致了这个问题。为什么操作不只是超时?
asp.net - 在文件下载 HTTP 处理程序中处理 404 的最佳方法?
我有一个网格,它为用户提供了一些下载文件的链接。文件存储在应用程序之外,路径引用从数据库中读取,并且 HTTP 处理程序 (*.ashx) 用于为每个请求的文件提供服务。但是,可能存在指向不存在文件的数据库条目。我抓住了FileNotFoundException
,但我不确定通知用户丢失文件的最佳方法是什么(以便他们可以联系支持)。
第一个想法是在响应上设置一个标准的 404 代码,这就是我现在正在做的事情。
更有用的方法是显示有关丢失文件的通知 (jQuery),但文件下载不是在 AJAX 中完成的,因此这将涉及两步过程 - 客户端 onclick 处理程序调用 Web 服务方法来检查是否该文件存在,如果不存在,那么我取消单击(返回 false)并向用户显示一条友好消息。但是,如果文件存在,我将继续正常执行。但这又增加了另一个服务器调用。
你有没有处理过类似的问题?你是怎么解决的?
一些说明 - 该应用程序是在 ASP.NET 2.0 中构建的,并使用 jQuery 来调用 Web 服务方法。
asp.net - ASP.NET HTTPHandlers and long running processes
This is a multi-part question.
I have a process that can take several minutes to complete, it is ran by a calling a HTTPHandler using a asynchronous javascript request.
Question 1: How can I ensure that this request does not time out on both the server and the client?
Question 2: Is it possible to emit data from the HTTPHandler while processing that is sent back to the XmlHttpRequest object before the final page is completed?
I'd like to calculate actual workload and return percentage done. I'm guessing that this is possible.
Any tips?
EDIT:
A quick test:
Pushes Hello World bit by bit to the client...This works on a synchronious request, I'll see if a xmlHttpRequest gets a readystatechange event for each line.
I've always avoiding multithreading on ASP.NET apps because you don't have control of when the working process will die, which will result in all of its spawned threads dieing.
Instead, why re-invent a separate thread pool when IIS is already doing this for you.
.net - 如何在 ASP.NET MVC 中使用通用处理程序 (ASHX)?
我需要在我的 ASP.NET MVC 应用程序中使用图像生成器,但我不知道是否可以在 ASP.NET MVC 中使用 ASHX。
如果有一个类似于 IHttpHandler 的类继承了 IViewDataContainer,那么我可以在我的 ASHX 上使用 ViewData.Model。
我阅读了一篇关于它的博客文章,但与我在ASP.NET 论坛中获得的信息相比,它似乎已经过时了
有任何想法吗?
asp.net - AJAX 不适用于 ASP.NET HTTP 处理程序
我想我在做一些愚蠢的事情。我发誓我以前做过这个没有问题,但现在我无法让它工作。我有一个用 ASP.NET 编写的 HTTP 处理程序,我想通过 AJAX(使用 jQuery)调用它。在我的 web.config 中,我像这样注册处理程序......
处理程序只是设置为现在进行测试...
我有以下 jQuery 来调用它...
我知道用于发出请求的 URL 是正确的。IIS 设置为将 axd 路径路由到 ASP.NET ISAPI 过滤器。我已经验证我的处理程序没有被调用(我将处理程序更改为打印日志消息并且没有打印任何内容。事件查看器没有显示任何内容)。
有任何想法吗?
编辑: 当我尝试直接导航到浏览器中的处理程序时,我收到 404 错误。
c# - .net HttpHandlers 将请求向上传递到 IIS6
有没有办法让 Http 处理程序将请求通过管道备份到 IIS 6 并让它处理请求?
例如,如果我为 verb="(wildcard)" path="(wildcard).txt" 设置了一个 Http 处理程序
我有一个名为 myunformated.txt 的文件,如果它没有附加查询字符串参数,我希望 IIS 6 将它发送给用户。
有任何想法吗?