AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 52872
Accepted
wweicker
wweicker
Asked: 2009-08-12 10:13:20 +0800 CST2009-08-12 10:13:20 +0800 CST 2009-08-12 10:13:20 +0800 CST

IIS 日志显示 sc-win32-status=64 但仅通过某些网络

  • 772

我有一个在客户端服务器(W2k3、IIS6、.NET 2.0)上运行的 ASP.NET 应用程序。FWIW,这是一个测试实例,尚未移入生产环境。所以它不是在 SSL、负载平衡等下运行的。

当我从我们的办公室访问他们服务器上的一个页面时,该页面被点击一次。检查 IIS 日志 (c:WINDOWS\system32\LogFiles\W3SVC1) 显示该页面的 GET,然后我按下页面上的按钮,日志文件显示 POST。到目前为止,这似乎工作正常。

现在,当我远程进入客户端网络并从他们的一台本地计算机访问该页面时,日志文件显示一个 GET,然后我按下页面上的按钮,日志同时显示两个POST。第一个显示状态(sc-status,sc-substatus,sc-win32-status)200 0 64,第二个显示200 0 0。

在日志文件中,两个 POST 是相同的。基本上日志看起来像这样(除了我屏蔽了一些数据):

#Fields: 日期时间 s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status
2009-08-11 20:19:32 xxxx GET /File.aspx - 80 - yyyy Mozilla/4.0+(兼容;+MSIE+8.0;+Windows+NT+6.0;+WOW64;+Trident/4.0;+SLCC1; +.NET+CLR+2.0.50727;+.NET+CLR+3.5.21022;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30618;+MDDR;+OfficeLiveConnector.1.4;+OfficeLivePatch .0.0) 200 0 0
2009-08-11 20:19:45 xxxx POST /File.aspx - 80 - yyyy Mozilla/4.0+(兼容;+MSIE+8.0;+Windows+NT+6.0;+WOW64;+Trident/4.0;+SLCC1; +.NET+CLR+2.0.50727;+.NET+CLR+3.5.21022;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30618;+MDDR;+OfficeLiveConnector.1.4;+OfficeLivePatch .0.0) 200 0 64
2009-08-11 20:19:45 xxxx POST /File.aspx - 80 - yyyy Mozilla/4.0+(兼容;+MSIE+8.0;+Windows+NT+6.0;+WOW64;+Trident/4.0;+SLCC1; +.NET+CLR+2.0.50727;+.NET+CLR+3.5.21022;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30618;+MDDR;+OfficeLiveConnector.1.4;+OfficeLivePatch .0.0) 200 0 0

问题是,页面被点击了两次。数据库对第一个请求执行操作,然后第二个请求检测到正在执行重复操作并抛出错误消息。用户认为他们的操作失败了,但实际上成功了。

sc-win32-status 64的错误描述是:“指定的网络名不再可用。” 这让我相信,鉴于两个 POST 请求都显示 HTTP 状态为 200,服务器成功地处理了请求,但客户端从未收到通知并重新提交请求。

  • 我该如何解决这个问题?

  • 有什么想法可能仅在其内部网络上导致这种行为吗?

  • 我应该提到,这发生在两个单独的客户站点,但不会发生在我们的其他六个客户站点,或在我们的办公室,或通过网络连接到我们的八个客户中的任何一个。

  • 是什么让这种在本地网络上 100% 的时间可重现,但在其他任何地方的时间为 0%?

更新:我发现极少数重复的 POST 请求的 sc-win32-status 为 995,而不是最初报告的 64。sc-win32-status=995 的错误描述是:“由于线程退出或应用程序请求,I/O 操作已中止。” 这没有任何意义(考虑到我可以完全访问代码)。我仍然不明白这个问题是如何或为什么会发生的,但新的错误代码让我相信它毕竟可能不是网络问题,我现在正在调查随机代码错误的可能性。

http networking log-files iis iis-6
  • 2 2 个回答
  • 55059 Views

2 个回答

  • Voted
  1. Best Answer
    wweicker
    2009-08-15T10:55:44+08:002009-08-15T10:55:44+08:00

    到目前为止,这是我对这个问题的理解:

    • sc-win32-status 64 表示“指定的网络名称不再可用。”
    • 在 IIS 向客户端发送最终响应后,通常它会等待来自客户端的 ACK 消息。
    • 有时客户端会重置连接,而不是将最终的 ACK 发送回服务器。这不是一个正常的连接关闭,因此 IIS 记录“64”代码。
    • 许多客户端在完成连接后会重置连接,以释放套接字而不是将其留在 TIME_WAIT/CLOSE_WAIT 中。
    • 代理往往比其他人更容易做到这一点。

    更新:我在这里和这里发现了一些有趣的信息,所以我基本上重写了页面以确保没有任何错误的标记等......问题现在消失了!这只是在黑暗中的一个镜头,我不能肯定地说是什么解决了这个问题,因为它只在一些非常特殊的情况下影响了我们的一些客户......

    • 20
  2. Russ Giddings
    2010-03-31T03:44:55+08:002010-03-31T03:44:55+08:00

    尝试通过代理服务器从 IIS6 提供 gzip 后的二进制文件时,我遇到了同样的问题。直接访问网站时我没有遇到任何问题。

    通过在客户端机器上运行Fiddler并检查响应,我发现这就是我的原因。Fiddler 警告响应已编码,然后抱怨 gzip 文件上的幻数不正确。

    我在我的代码中关闭了二进制文件的 gzip 压缩,并且问题停止发生。

    • 3

相关问题

  • IIS 优化

  • 为什么我的电脑休眠时 VPN 连接会中断?[关闭]

  • 有什么软件可以模拟局域网?

  • IIS 6.0 (Windows Server 2003) 备份的最佳实践?

  • 带宽利用工具?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve