2011-05-30 93 views
2

我有一台运行2008 R2和IIS 7.5的新VPS服务器。Windows Server 2008 R2(VPS)上的IIS7.5 - POST请求上的错误400

某些客户端软件(不是浏览器)通过HTTP GET和POST请求与服务器应用程序(ASP.NET)进行通信。

在IIS7.5的HTTP POST请求被拒绝,并出现“HTTP 400错误 - 请求格式错误”

同一个应用程序的工作原理没有问题的IIS7,并已工作多年的IIS6。

我只能假设IIS7.5做了一些额外的验证检查? 有什么方法可以关闭它们吗?我尝试了我在MSDN上找到的所有设置,但似乎没有工作到目前为止,我甚至无法让IIS为拒绝的请求转储日志!

更改客户端代码不是一个选项。

以下是失败的POST请求。

谢谢, Nikos。

POST /NK002/Inbound.ashx?rid=0 HTTP/1.1 
User-Agent: nkHTTP_1 
Accept: */* 
Accept-Encoding: identity; application/octet-stream; application/x-www-form-urlencoded 
Host: www.nks001.com 
Connection: keep-alive 
Content-Length: 307 

<nkXML> 
    <header count="2"> 
    <service>Connection</service> 
    <function>Initialize</function> 
    </header> 
    <body count="4"> 
    <platform>Windows</platform> 
    <data>BbbFBwAAAABFPaRkAAAAAHN5aE8AAAAA</data> 
    <attName_0>PoolRebel.Version</attName_0> 
    <attValue_0>2</attValue_0> 
    </body> 
</nkXML> 

回答

1

问题是您的Accept-Encoding:标题。最后两个内容编码无效:

 
application/octet-stream 
application/x-www-form-urlencoded 

根据IANA的permissiable内容编码值,你只能使用:

 
compress 
deflate 
exi 
gzip 
indentity 
pack200-gzip 

Hypertext Transfer Protocol (HTTP) Parameters - IANA

IIS7.5坚持的更严格的标准比之前的版本。

更新:

进一步深挖约产生这个论坛讨论:

Thread: IIS 7.5 Accept-Encoding fails with multiple values

+0

非常感谢你 - 这就是问题所在。我想唯一的选择是更新客户端应用程序。这将是痛苦的,但必须完成。 – Nikos 2011-05-31 06:59:06

+0

@Kev:关于如何覆盖它的任何新见解?遇到它/谷歌的PageSpeed服务:http://serverfault.com/questions/588272/how-to-get-iis-to-accept-encoding-gzipgfe,似乎没有任何工作。 – Nariman 2014-04-11 02:49:13