【问题标题】:Using chunked encoding in a POST request to an asmx web service on IIS 6 generates a 404在对 IIS 6 上的 asmx Web 服务的 POST 请求中使用分块编码会生成 404
【发布时间】:2011-01-15 07:05:48
【问题描述】:

我正在使用 CXF 客户端与在 IIS 6 上运行的 .net Web 服务进行通信。 此请求(匿名):

POST /EngineWebService_v1/EngineWebService_v1.asmx HTTP/1.1 内容类型:文本/xml;字符集=UTF-8 SOAPAction:“http://.../Report” 接受: */* 用户代理:Apache CXF 2.2.5 缓存控制:无缓存 Pragma:无缓存 主机:uat9.gtios.net 连接:保持活动 传输编码:分块

后跟 7 个 4089 字节的块和一个 369 字节的块,在发送第一个块后生成以下输出:

HTTP/1.1 404 未找到 内容长度:103 日期:格林威治标准时间 2010 年 2 月 10 日星期三 13:00:08 连接:保持活动 内容类型:文本/html

有人知道如何让 IIS 接受 POST 的分块输入吗?

谢谢

【问题讨论】:

    标签: post iis-6 asmx http-status-code-404 chunked-encoding


    【解决方案1】:

    分块编码应该是enabled by default。您可以通过以下方式检查您的设置:

    C:\Inetpub\AdminScripts>cscript adsutil.vbs 获取 /W3SVC/AspEnableChunkedEncoding

    404 让我想知道分块编码是否真的有问题。您是否对 URL 进行了三次检查?

    【讨论】:

    • 我已经通过元数据库查看器并启用了 AspEnableChunkedEncoding(并且没有在任何地方禁用)。您是否有过 AspEnableChunkedEncoding 会影响 POST 上传和下载的经验?文档没有说任何关于分块 POST 的内容。 URL 没有问题,较小的请求成功。谢谢。
    • 是的,我有,但只有 type="FILE",但这仍然是 HTTP POST。事件日志中有任何内容吗?
    【解决方案2】:

    您的服务器上可能正在运行 URLScan。默认情况下,URLScan 配置为拒绝具有 transfer-encoding: 标头和 URLScan sends 404 errors 的请求(这在适当的服务器错误中很明显)。

    UrlScan v3.1 失败会导致 404 错误,而不是 500 错误。 在 W3SVC 日志中搜索 404 错误将包括由于故障 到 UrlScan 阻止。

    您需要查看位于(路径可能不同)C:\Windows\System32\inetsrv\URLScan\URLScan.ini 的文件。在那里的某个地方你会发现一个[DenyHeaders] 部分,看起来有点像这样(它可能会列出更多标题)。

    [DenyHeaders]
    
    transfer-encoding:
    

    从此列表中删除transfer-encoding:,它应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 2010-10-11
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      相关资源
      最近更新 更多