2
votes

I have a new VPS server running 2008 R2 and IIS 7.5.

Some client software (not browser) communicates with a server application (ASP.NET) via HTTP GET and POST requests.

On IIS7.5 the HTTP POST requests are rejected with the error: "HTTP Error 400 - Request is badly formed"

The same application works with no issues on IIS7 and has worked for years on IIS6.

I can only assume IIS7.5 does some additional validation checks? Is there any way to turn them off? I tried all the settings I found on MSDN but nothing seems to work so far and I cannot even get IIS to dump a log for the rejected requests!

Changing the client code is not an option.

Below is the POST Request that fails.

Thank you, 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

1 Answers

1
votes

The problem is your Accept-Encoding: header. The last two Content-Codings are not valid:

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

According to IANA's permissiable Content-Coding values you can only use:

compress
deflate
exi
gzip
indentity
pack200-gzip

Hypertext Transfer Protocol (HTTP) Parameters - IANA

IIS7.5 adhere's more rigorously to the standards than previous versions.

Update:

Further digging about produced this forum discussion:

Thread: IIS 7.5 Accept-Encoding fails with multiple values