IIS7应用程序请求路由(arr反向代理)与托管模块相结合 - 超时

2024-06-19

我正在尝试构建一个代理,该代理可以为内部站点(隐藏来源)的请求提供服务,但同时检查数据包并异步对其进行后处理。

例如。假设所有 SOAP 调用http://www.foo.com http://www.foo.com将会去http://192.168.1.1 http://192.168.1.1,同时存储在数据库中以供后期分析。内部服务器是一个黑匣子,因此更改其上的某些内容超出了本问题的范围。

无论如何,我已经配置了 ARR,使用反向代理,使用通配符进行 URL 重写过滤器,所有工作都完美无缺。然后,我尝试添加一个用 C# 编写的托管 HttpModule,并连接到 Application_BeginRequest 和 Application_EndRequest。我能够访问请求标头、最终请求的响应标头(应用程序池处于集成模式),甚至能够通过在 Response.Filter 上设置过滤器来从输出流读取响应内容,该过滤器将所有写入缓存在附加内存流中。

问题是,当我尝试从请求读取(在模块 BeginRequest 处理程序内)输入流时,ARR 会停留一段时间并抛出一个

HTTP 错误 502.3 - 网关错误 操作超时处理程序 应用程序请求路由处理程序 错误代码 0x80072ee2

所以就超时了。

查看失败的请求跟踪我看到:

MODULE_SET_RESPONSE_ERROR_STATUS 警告 ModuleName =“应用程序请求路由”, 通知=“EXECUTE_REQUEST_HANDLER”, HttpStatus =“502”,HttpReason =“坏” 网关", HttpSubStatus="3", 错误代码=“2147954402”, 配置异常信息=“” SET_RESPONSE_ERROR_DESCRIPTION 警告 ErrorDescription="操作已计时 出去”

现在网上任何类似的帖子都没有帮助,因为这不是超时错误(代理有 120 秒设置,页面响应时间在 100 毫秒以下),当我评论尝试读取 FORM 数据的处理程序代码时或输入流数据,一切都充满魅力。

即使我在读取输入流后将其位置设置为 0,我仍然会超时。 如果我读取 EndRequest 上的输入流,它会获取 0 字节,即使它是 POST 请求。 (这显然是错误的)

ARR 是否存在错误,因为我在尝试重新路由之前尝试读取输入流?

使用的东西:Windows Server 2008 R2 IIS 7.5 ARR v2 .Net 框架 3.5 模块

有想法吗? 谢谢 /科斯明


如果您可以切换到.Net Framework 4,则有一个解决方案。

在 HttpModule 事件处理程序中完成 BeginRequest/EndRequest 后,添加对HttpRequest.InsertEntityBody.

    /* BeginRequest event: Executes before request is processed */
    private void Application_BeginRequest(Object source, EventArgs e)
    {
        HttpApplication application = (HttpApplication)source;
        HttpRequest request = application.Context.Request;

        // Do something with request
        DoMyOwnRequestProcessing(request);

        // After you finish, make sure IIS gets the entity body
        // For example, Application Request Routing needs this
        request.InsertEntityBody();
    }

看看MSDN上的这个:HttpRequest.InsertEntityBody http://msdn.microsoft.com/en-us/library/ee169616.aspx.

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

IIS7应用程序请求路由(arr反向代理)与托管模块相结合 - 超时 的相关文章

  • Android httpclient文件上传数据损坏和超时问题

    我在 Android 中上传图像时遇到问题 我正在使用 apache httpmime 4 1 lib 代码是这样的 MultipartEntity reqEntity new MultipartEntity HttpMultipartMo
  • 处理从nodejs到mongo db的连接丢失

    当nodejs和mongodb服务器之间的连接丢失时 我试图得到 连接丢失 或类似的信息 我使用本机驱动程序并具有以下代码 var mongo require mongodb var server new mongo Server host
  • IIS7 和 ARR 作为 Subversion 的反向代理

    我使用 IIS7 和应用程序请求路由扩展来充当 Apache 上运行的 Subversion 的反向代理 代理工作正常 我能够探索服务器 甚至执行 签出 但是 我无法浏览 ASP NET 通常禁止的文件 例如 cs csproj 等 ASP
  • Android:进程已死亡 - 资源不足?

    我编写的简单 HTTP GET 请求有一个小问题 该请求每 X 分钟请求一个 URL 我每天都会遇到一两次进程在 GET 请求期间停止的情况 这是调试日志的示例 12 07 16 29 22 650 V TAG 11655 Executin
  • 如何从 PowerShell 指定应用程序池身份用户和密码

    我在自动化 Web 应用程序设置和使用应用程序池标识适当配置 IIS 方面遇到了很多困难 我在用 PowerShell 编写的 Web 应用程序部署脚本中执行此操作 我的要求是我需要 PowerShell 脚本将应用程序池身份用户设置为特定
  • SqlException超时未达到

    我们的服务器有时会抛出这个众所周知的异常 超时已过 操作完成之前超时时间已过 或者服务器未响应 当服务器处理大请求时 这种情况会在压力下发生 我做了一些研究 发现我可以改变连接字符串连接超时设置和 或SqlCommand 超时数据读取器属性
  • IIS7集成管道:maxConcurrentRequestsPerCPU和requestsQueueLimit设置之间的交互

    首先 这里对 IIS7 HTTP 请求生命周期以及影响性能的各种设置进行了很好的概述 IIS 7 0 和 6 0 上的 ASP NET 线程使用情况 http blogs msdn com b tmarq archive 2007 07 2
  • 使用 Apache 作为代理时,无法使用 playframework 为静态资源生成正确的 URL

    我使用 Apache 服务器作为我的 playframework 应用程序的代理 代理配置文件如下 gt
  • OpenShift 服务代理超时

    我有一个应用程序部署在OpenShift 容器平台 v3 6 它由多个彼此互连的服务组成 The frontend服务调用一个耗时的函数backend服务 通过 REST 调用 但之后30秒它收到一个 504网关超时 信息 Frontend
  • 无 Cookie 会话和 IIS7 导致重定向循环

    我有一个使用无 cookie 会话的 ASP NET 网站 当使用以下 url 向站点发出初始请求时 http localhost 站点 http localhost site IE 仅显示标准的 Internet Explorer 无法显
  • IE8不保留会话变量

    如果我托管一个 ASP NET 页面
  • nodeJS 防止 res.download 超时

    我对我的 nodeJS 服务器进行了 POST 调用 该服务器在 mongo 数据库上搜索一些数据并返回包含所请求数据的 CSV 文件 问题是数据搜索和处理超过了nodeJS默认的2分钟超时 在不同的场景中 y 使用 res writeHe
  • 未为 OPTIONS Ajax 请求设置标头

    我有一个ascx page GetToken ashx public void ProcessRequest HttpContext context context Response ContentType text plain conte
  • System.Web.UI.ViewStateException:无效的视图状态

    我有一个用 ASP net 和 C 开发的 Web 应用程序 我还使用 Telerik ASP NET AJAX 作为 Web UI 应用程序抛出异常 System Web UI ViewStateException Invalid vie
  • 无法在我的抓取工具中设置超时选项以防止无限循环

    我已经使用 IE 在 vba 中编写了一个脚本 在其搜索框中的网页中启动搜索 通过点击搜索按钮根据搜索填充结果 网页加载它是searchbox几秒钟后它就会打开 但是 我的下面的脚本可以处理这个障碍并以正确的方式执行搜索 现在 我有一个稍微
  • 即使使用“autoReconnect=true”,MySql JDBC 也会超时[重复]

    这个问题在这里已经有答案了 有时 我的 Java Tomcat6 Debian Squeeze 应用程序无法与 MySql 服务器通信 Tomcat 应用程序位于前端服务器上 而 MySql 位于单独的 仅限 MySql 的机器上 一个典型
  • 生成Excel文件错误

    我在经典 ASP 中使用以下代码生成 Excel 文件 代码很简单并且有效 我在 Windows Vista x86 上的 IIS 7 0 下运行代码 两个问题 有一个奇怪的警告框 这是屏幕快照 http i27 tinypic com 2
  • IIS 和网络花园配置

    允许 IIS 在每个应用程序池 网络花园配置 中生成多个工作进程是否具有显着的性能优势 哪些性能计数器表明这可能是个好主意 我知道会话状态必须在进程外运行 但是还有其他问题吗 我做了一些研究 发现这篇有用的文章 其中涵盖了许多潜在的问题 并
  • 自动杀死多处理池的进程和子进程

    我正在使用多处理模块进行并行处理 下面的代码片段在 X 位置搜索字符串文件名并返回找到该字符串的文件名 但在某些情况下 搜索过程需要很长时间 所以我试图杀死搜索过程 花费超过 300 秒 为此 我使用了 timeout 300 如下所示 这
  • 配置的托管模块出现 Asp.net MVC 错误

    我有自定义身份验证HttpModule这是相当困难的 但我希望它仅针对托管请求运行 而不是静态请求 Asp net MVC 自动添加 IIS7 Web 服务器的配置部分

随机推荐

  • 如何使用 vb.net 将数据插入 Access 表?

    我想在 Access 数据库中插入一个新行 我正在考虑做类似的事情 oConnection new Connection connectionstring oTable oCennection table Orders oRow oTabl
  • Windows 10 上的 LibPNG 构建问题

    我试图在 Windows 10 上构建 libpng 以获取 win32 二进制文件 但我认为有一个与 awk 解析带有 CRLF 行结尾的文件相关的问题 我尝试使用 dos2unix 命令转换文件 但没有成功 结果相同 在 make 命令
  • 局部变量在栈中的顺序是怎样的?

    我目前正在尝试对缓冲区溢出漏洞进行一些测试 这是易受攻击的代码 void win printf code flow successfully changed n int main int argc char argv volatile in
  • Polly 速率限制过早[重复]

    这个问题在这里已经有答案了 我正在尝试了解 Polly 的速率限制政策 public class RateLimiter private readonly AsyncRateLimitPolicy throttlingPolicy priv
  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • 如何从Apollo客户端的useQuery获取响应头

    我根本无法找到一种方法来做到这一点 有谁知道这是否支持 谢谢 ApolloClient 发出请求的方法以及使用它们的 React Hooks 充当数据实际获取方式的抽象 它可能来自 HTTP 上的远程服务器 来自缓存 来自直接针对模式执行请
  • Javascript:“new Array(4)”与 Array.apply(null, {length: 4}) 有何不同?

    我想生成一个给定长度的空数组并用一些数字填充它 生成具有四个连续数字元素的数组的一种方法是 var x Array apply null length 4 map function item index return index 但当我看到
  • 多线程环境下如何更好的使用ExecutorService?

    我需要创建一个库 其中包含同步和异步方法 executeSynchronous 等待直到有结果 返回结果 executeAsynchronous 立即返回一个 Future 如果需要 可以在其他事情完成后进行处理 我的图书馆的核心逻辑 客户
  • 数字之和 C++

    我应该编写一个程序 要求用户提供正整数值 该程序应该使用循环来获取总和 从 1 到输入数字的所有整数 例如 如果用户输入 50 循环将求出 1 2 3 4 50 但由于某种原因它不起作用 我的 for 循环遇到了麻烦 但这就是我到目前为止所
  • 使用 EditableText 进行 Flutter

    我正在尝试弄清楚如何在 Flutter 中使用 TextEditor 我有 卡片编辑器 基本上我希望能够处理相当于一段文本的内容 new EditableText autofocus true maxLines null backgroun
  • 动态二维数组非连续内存C++

    假设我将二维数组的地址及其二维数组的行和列传递给函数 该函数会将二维数组的地址视为一维数组 例如 int Matrix 如果我执行下面的代码 int arr arr new int row for int i 0 i lt row i ar
  • 如何访问 Scala XML 中的父元素

    The scala xml包表示带有标记树节点的 XML 但是这棵树在 Scala 2 7 中是单向的吗 因为似乎没有办法访问Elem给定的父级Elem 这似乎同样适用于父母Document 例如 在 XOM 中你有getParent an
  • HTTP POST 操作出现错误代码 302

    我有一个 perl 脚本 它将数据发送到我用 php 编写的 Web 服务 这是代码 use LWP UserAgent my ua LWP UserAgent gt new my server endpoint http example
  • 如何使用 jQuery 拖放文本

    我需要创建一个消息模板 如下所示 你好 Stackoverflow Text A 感谢您的支持 Text B 在这种情况下 我需要使用拖放字段来Textarea 我进行了初步研发 寻找一些库来实现我的要求 并发现了这个通过拖放插入文本 ht
  • 无法运行gradlew

    我已经设置了一个build gradle文件与apply plugin java 我尝试使用说明设置 gradle 包装器here http spring io guides gs gradle 但是当我输入时sudo gradlew bu
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • 如何使用 jQuery 在弹出窗口中预览输入类型=“文件”中选定的图像? [复制]

    这个问题在这里已经有答案了 在我的代码中 我允许用户上传图像 现在我想在同一个弹出窗口中将所选图像显示为预览 我怎样才能使用 jQuery 做到这一点 以下是我在弹出窗口中使用的输入类型 HTML 代码
  • ntdll!kifastsystemcallret

    我的程序在执行结束时崩溃 甚至看不到堆栈展开信息 我只能看到这个 ntdll kifastsystemcallret 有人能提供一些线索吗 KiFastSystemCallRet 意味着线程处于系统调用中 x86 NT 系统调用调度的一个不
  • chrome 中的 Javascript window.print(),关闭新窗口或选项卡而不是取消打印会使 javascript 在父窗口中被阻止

    在我开发的应用程序中 用户可以从几个不同的位置进行打印 在所有这些情况下 我们都使用打开新窗口 或选项卡 的相同工作流程 将需要打印的任何内容写入新窗口的文档 然后调用 w document ready function w focus w
  • IIS7应用程序请求路由(arr反向代理)与托管模块相结合 - 超时

    我正在尝试构建一个代理 该代理可以为内部站点 隐藏来源 的请求提供服务 但同时检查数据包并异步对其进行后处理 例如 假设所有 SOAP 调用http www foo com http www foo com将会去http 192 168 1