Unsere App läuft auf IIS 7.5 mit aktivierter Windows-Authentifizierung. Beim Hochladen von Dateien über POST melden einige Benutzer zeitweise Fehler 400 von IIS mit der Meldung „Ungültiges Verb“.
Ich konnte dies selbst reproduzieren, indem ich dasselbe Formular wie der Benutzer mit derselben hochgeladenen Datei ausfüllte. Es schlug zweimal hintereinander fehl, war dann aber beim dritten Mal erfolgreich.
Über die Registerkarte „Netzwerk“ von Chrome konnte ich die Anforderungs- und Antwortheader sowohl der fehlgeschlagenen als auch der erfolgreichen Versuche kopieren.
Meine Interpretation des Unterschieds lässt darauf schließen, dass der Authentifizierungsschritt fehlschlägt, aber ich könnte mich irren. Irgendwelche Vorschläge, was ich prüfen sollte?
Erfolg
POST <redacted> HTTP/1.1
Host: <redacted>
Connection: keep-alive
Content-Length: 26636
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: <redacted>
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryQ6KIItP6Z7A76guk
Referer: <redacted>
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Cookie: <redacted>
X-CookiesOK: I explicitly accept all cookies
HTTP/1.1 302 Found
Content-Type: text/html; charset=UTF-8
Location: <redacted>
Server: Microsoft-IIS/7.5
X-Powered-By: PHP/5.6.6
X-Powered-By: ASP.NET
Date: Wed, 17 Jun 2015 10:37:42 GMT
Content-Length: 164
Scheitern
POST <redacted> HTTP/1.1
Host: <redacted>
Connection: keep-alive
Content-Length: 46013
Cache-Control: max-age=0
Authorization: NTLM <redacted>==
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: <redacted>
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryY5kiMQ9SHsqAoBjs
Referer: <redacted>
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Cookie: <redacted>
X-CookiesOK: I explicitly accept all cookies
HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 17 Jun 2015 10:43:50 GMT
Connection: close
Content-Length: 326
http.sys
verfolgen:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-HttpService" Guid="{dd5ef90a-6398-47a4-ad34-4dcecdef795f}" />
<EventID>52</EventID>
<Version>0</Version>
<Level>2</Level>
<Task>1</Task>
<Opcode>62</Opcode>
<Keywords>0x8000000000000002</Keywords>
<TimeCreated SystemTime="2015-06-17T13:14:10.558152100Z" />
<Correlation ActivityID="{80000507-0000-7000-b63f-84710c7967bb}" />
<Execution ProcessID="4" ThreadID="1376" ProcessorID="0" KernelTime="32565" UserTime="0" />
<Channel>Microsoft-Windows-HttpService/Trace</Channel>
<Computer />
</System>
<EventData>
<Data Name="Status">0xC0000010</Data>
<Data Name="RequestId">0x7000000080000507</Data>
<Data Name="Reason">VerbLookupFailed</Data>
<Data Name="ErrorCode"> 2</Data>
<Data Name="HintLength"> 8</Data>
<Data Name="HintData">0x535541696A6A5648</Data>
</EventData>
<RenderingInfo Culture="en-US">
<Level>Error </Level>
<Opcode>ParseRequestFailed </Opcode>
<Keywords>
<Keyword>Flagged on all HTTP events dealing with request processing </Keyword>
</Keywords>
<Task>HTTP Request Trace Task </Task>
<Message>Parsing of request (request ID 0x7000000080000507) failed due to reason: VerbLookupFailed. Request may not be compliant with HTTP/1.1. </Message>
<Channel>HTTP Service Channel </Channel>
<Provider>Microsoft-Windows-HttpService </Provider>
</RenderingInfo>
</Event>