IIS ASP.Net网站 - ManagedPipelineHandler错误(尝试在不存在的网络连接上进行操作)

10

我遇到了一个奇怪的问题。我有一个使用Forms身份验证的ASP.Net Web应用程序。如果我打开登录页面,并且有几分钟没有活动,登录尝试就会超时或IE / FireFox显示“无法显示此页面”。如果没有暂停或活动不足,就没有问题,网站会按预期运行。

我在IIS中启用了跟踪。似乎挂起的区域是NOTIFY_MODULE_START模块名称:ManagedPipelineHandler。在132141 ms后,我收到以下错误消息:I/O操作已因线程退出或应用程序请求而中止。(0x800703e3) - ErrorCode 2147943395。

错误代码2147943629

错误代码尝试在不存在的网络连接上执行操作。(0x800704cd)

屏幕截图: http://www.plasmawebservices.com/images/errorScreenShot.png

服务器为Windows 2008 SP2。IIS 7

是否有人遇到过类似的错误?

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<telerik:RadFormDecorator ID="RadFormDecorator" runat="server" DecoratedControls="All" />
<p>
    Please enter your username and password.
</p>
<asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false">
    <LayoutTemplate>
        <asp:Panel runat="server" ID="LoginPanel" DefaultButton="LoginButton">
            <p>
                <span class="failure-notification">
                    <asp:Literal ID="FailureText" runat="server"></asp:Literal>
                </span>
            </p>
            <asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failure-notification"
                ValidationGroup="LoginUserValidationGroup" />
            <div class="account-info">
                <fieldset class="login">
                    <legend>Account Information</legend>
                    <p>
                        <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Username:</asp:Label>
                        <asp:TextBox ID="UserName" runat="server" CssClass="text-entry"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
                            CssClass="failure-notification" ErrorMessage="User Name is required." ToolTip="User Name is required."
                            ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
                    </p>
                    <p>
                        <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
                        <asp:TextBox ID="Password" runat="server" CssClass="password-entry" TextMode="Password"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"
                            CssClass="failure-notification" ErrorMessage="Password is required." ToolTip="Password is required."
                            ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
                    </p>
                    <%--<p>
                        <asp:CheckBox ID="RememberMe" runat="server"/>
                    <asp:Label ID="RememberMeLabel" runat="server" AssociatedControlID="RememberMe" CssClass="inline">Keep me logged in</asp:Label>
                    </p>--%>
                </fieldset>
                <p class="margin-top-10">
                    <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="LoginUserValidationGroup" />
                </p>
            </div>
        </asp:Panel>
    </LayoutTemplate>
</asp:Login>

谢谢,Brennan

4个回答

8

解决方案

客户在服务器上安装了AVG安全工作站组件。这些工作站组件导致与IIS的通信出现问题。通过禁用在线屏蔽和常驻屏蔽,可以消除症状。

案例记录:

在Web应用程序的任何页面停留不活动两分钟后,该页面将被锁定。您将在下一次操作中看到Ajax加载面板(也称为旋转图标)120秒,然后什么都没有。应用程序已经锁定。

要找出我们在若干分钟的空闲时间后浏览任何网页时为什么会出现错误“尝试对不存在的网络连接进行操作。 (0x800704cd)”,需要查明根本原因。此问题可能由多种原因引起,为了解决此问题,我们将专注于一个根本原因。如果问题是由Microsoft组件引起的,我们将努力高效地解决此问题。如果发现问题的原因是第三方或自定义组件,则我们将乐意详细讨论我们的调查结果并提供可能的解决方法/解决方法。最终,解决此类问题将取决于第三方供应商。

为了进行故障排除,创建了默认的ASP.Net网站,并将其部署为IIS的新网站。结果与有问题的网站相同。

IIS HTTP错误:

开始 -> 运行 -> LogFiles

2011-09-20 21:25:25 xx.xxx.xxx.xxx 36482 192.168.10.32 80 HTTP/1.1 POST /orders/mail/mailorderentry - - Timer_HeaderWait –

2011-09-20 21:22:29 xx.xxx.xxx.xxx 44399 192.168.10.32 80 HTTP/1.1 POST /orders/mail/mailorderentry - - Client_Reset –

起初,问题似乎出现在Telrik上。在通过IIS跟踪加载Telerik.Web.UI.RadCompression时,记录了以下错误:

Telerik.Web.UI.RadCompression 132187 ms

  1. -GENERAL_READ_ENTITY_END BytesReceived 0 ErrorCode 2147943395 ErrorCode I/O操作已因线程退出或应用程序请求而中止。 (0x800703e3) 信息

  2. -GENERAL_FLUSH_RESPONSE_END BytesSent 0 ErrorCode 2147943629 ErrorCode 尝试对不存在的网络连接进行操作。 0x800704cd)

从Web应用程序的web.config文件中删除了RadCompression模块;但是问题仍然存在。

建议的解决方案:

目前在服务器上禁用AVG在线屏蔽和常驻屏蔽。

来自AVG:

以下AVG组件仅设计用于工作站使用:

  • AVG防火墙
  • AVG在线保护
  • AVG个人电子邮件扫描器
  • AVG链接扫描器

以上组件未经系统负荷测试。如果安装在服务器操作系统(如ISA、代理、邮件服务器、终端服务器等)上,这些组件可能会导致与服务器通信出现问题。为避免这些问题,不建议在服务器操作系统上安装上述组件。

注:如果您将安装了某些服务器操作系统(例如Windows Server 2000、2003等)的计算机作为没有启用服务器功能的标准计算机使用,则不适用此规定。

有关在特定服务器上安装AVG的更多信息,请参阅以下FAQ:

  • FAQ 2129 - 终端服务器
  • FAQ 2176 - 电子邮件服务器

谢谢您。我刚刚花了10个小时试图弄清楚为什么一个来自外部服务器的HTTP POST请求无法发送到我的本地机器(用于测试目的)。 - krisdyson

2

我知道这是一篇旧文章,但以防万一有人遇到相同的问题...

当我们的负载均衡器设备尝试检查我们网站之一的https时,我们也收到了同样的错误。通过pc浏览器访问链接没有问题。

  • 读取HTTP响应时出错

失败请求跟踪显示了以下2个错误

  • BEGIN_REQUEST - I/O操作已被中止,因为线程退出或应用程序请求。(0x800703e3)
  • 尝试在不存在的网络连接上执行操作。(0x800704cd)

我们的解决方法是在IIS下找到“SSL设置”。当前选择了“客户端证书”中的“接受”。将其更改为“忽略”即可解决问题。


0

我在我的Windows 7开发机上遇到了同样的问题 - 我的机器上也安装了AVG。

我发现只需在电子邮件扫描仪设置中禁用检查传入电子邮件即可解决问题。

我启用了Resident Shield - 这似乎不是问题所在。


客户的服务器上没有安装电子邮件扫描组件,这给我们带来了噩梦般的后果。由于AVG只在生产环境中安装,我们一直认为问题出在我们的Web应用程序上 : )。感谢您的反馈,希望其他人会发现这些信息有用。 - Brennan Mann

0

你遇到了执行超时的问题,因为ASP.NET应用程序在默认超时时间后没有返回给IIS。

http://msdn.microsoft.com/en-us/library/e1f13641.aspx

这并没有解释为什么需要这么长时间。你可以增加默认的110秒超时时间,这可能会让你更好地进行故障排除,除此之外,你应该尝试调试代码,因为在发布的ASP.NET示例中原因并不明显。

要更改默认设置,请在web.config中指定httpRuntimeexecutionTimeout

如果您正在连接到数据库进行身份验证,则可以查看并跟踪接收到的内容。


我已经增加了executionTimeout属性;然而,在我的自定义成员资格提供程序中,ValidateUser方法从未被执行。该方法调用WCF服务来验证用户。由于不活动,它在ASP.Net管道的某个地方挂起。有没有其他故障排除方法的想法?- 屏幕截图 谢谢 - Brennan Mann
@ Brennan,你能发布你的web.config吗?特别是你是否有任何自定义定义的模块或处理程序?另外,我可以确认你正在使用IIS 7.0集成。 - Bernie White
我们曾经有自定义模块和处理程序。我们尝试删除它们以进行故障排除,但没有成功。我们当时正在运行Windows 2008 SP 2。 - Brennan Mann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接