1800-Brad-Man
1800-Brad-Man

Reputation: 21

Slow file upload via httpPOST - Windows 10 Clients only - ASP.Net

I'm having an issue I can replicate with windows 10 for a local intranet file hosting app. The site is only exposed on our internal domain, and specifically while testing, running on IIS on my PC. Site is deployed in ASP.NET, using a simple file upload via a FileUpload control and HTTPPOST.

Issue : Windows 10 CLIENTS take 8+ minutes to upload the same file a windows 7 CLIENT can upload in 40 seconds. The test file is 70mb. Both client PCs are on the same domain. I was able to replicate this on 2 windows 10 clients(slow) and 2 windows 7 clients(fast) both using chrome. Destination is a shared network drive, file is received in both cases

The code is simple, just using a file save as serverside when the post completes, the issue seems to lie in the POST itself being slow. I've included some information from the headers below from chrome. What I noticed is with the windows 10 clients, I'm seeing a request to "Switch Protocols" and then in addition a 302 response, Here are the header details for each below

What are we doing wrong?

Here is the "Switch Protocols" header only seen on windows 10 clients

Request URL: ws://localhost:63449/aa0280e0694b40f7bca6bcaa29418f4f/browserLinkSignalR/connect?transport=webSockets&connectionToken=AQAAANCMnd8BFdERjHoAwE%2FCl%2BsBAAAAFyOLt7H71U2FKx%2FdcXqPHQAAAAACAAAAAAADZgAAwAAAABAAAAAs2ynRNgPw8MalSlFIZY6nAAAAAASAAACgAAAAEAAAAJHm%2Br%2Fjy%2BcSLaEGVe8UoWcoAAAAMw39XfnGxZD%2B3ln4NC6jF46w3svfdryAl48W5jj380n9bvxf%2F0abLRQAAAD%2BgohVMaFYmfCOWnlTgPxHhh4ouA%3D%3D&requestUrl=http%3A%2F%24mrdx12.[domain].com%2ReqSuccess%3FID%3D100059&browserName=Chrome&userAgent=Mozilla%2F5.0+(Windows+NT+10.0%3B+Win64%3B+x64)+AppleWebKit%2F537.36+(KHTML%2C+like+Gecko)+Chrome%2F65.0.3325.146+Safari%2F537.36&tid=9
Request Method: GET
Status Code: 101 Switching Protocols
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://4mrdx12.[domain].com
Connection: Upgrade
Date: Fri, 09 Mar 2018 18:42:48 GMT
Sec-WebSocket-Accept: j/q1e0XDRuOw5KZhl22ijqq6y3g=
Server: Microsoft-HTTPAPI/2.0
Upgrade: websocket
X-Content-Type-Options: nosniff

Windows 10 Client - Headers - Submit

Request URL: http://4mrdx12.[domain].com/SubmitReq
Request Method: POST
Status Code: 200 OK
Remote Address: [removed]
Referrer Policy: no-referrer-when-downgrade
Cache-Control: private
Content-Length: 22238
Content-Type: text/html; charset=utf-8
Date: Fri, 09 Mar 2018 18:42:46 GMT
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 64545954
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryJ2mFfUVn9MAwz7kh
Cookie: __AntiXsrfToken=2034bb9af99a41d685dcc6838ad46da5
Host: 4mrdx12.[domain].com
Origin: http://4mrdx12.[domain].com
Referer: http://4mrdx12.[domain].com/SubmitReq
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36
X-Requested-With: XMLHttpRequest
------WebKitFormBoundaryJ2mFfUVn9MAwz7kh
Content-Disposition: form-data; name="dlgFile"; filename="TestFile.xlsx"
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet


------WebKitFormBoundaryJ2mFfUVn9MAwz7kh--

Windows 10 - Headers - Redirect

Request URL: http://4mrdx12.[domain].com/SubmitReq
Request Method: POST
Status Code: 302 Found
Remote Address: [removed]
Referrer Policy: no-referrer-when-downgrade
Cache-Control: private
Content-Length: 165
Content-Type: text/html; charset=utf-8
Date: Fri, 09 Mar 2018 18:42:46 GMT
Location: /TUReqSuccess.aspx?ID=100059
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Content-Length: 64575348
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary4XoeJ8QBiQ9vypBa
Cookie: __AntiXsrfToken=2034bb9af99a41d685dcc6838ad46da5
Host: 4mrdx12.[removed].com
Origin: http://4mrdx12.[domain].com
Referer: http://4mrdx12.[domain].com/SubmitReq
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36
------WebKitFormBoundary4XoeJ8QBiQ9vypBa
Content-Disposition: form-data; name="__EVENTTARGET"


------WebKitFormBoundary4XoeJ8QBiQ9vypBa
Content-Disposition: form-data; name="__EVENTARGUMENT"

Windows 7 - Headers - Submit

Request URL: http://4mrdx12.[domain].com/SubmitReq
Request Method: POST
Status Code: 200 OK
Remote Address: [removed]
Referrer Policy: no-referrer-when-downgrade
Cache-Control: private
Content-Length: 21881
Content-Type: text/html; charset=utf-8
Date: Fri, 09 Mar 2018 18:43:52 GMT
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 64545954
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarylAheeBUHfdXrokSY
Cookie: __AntiXsrfToken=beef66457cc54cbe9488fc0496042a16
Host: 4mrdx12.[domain].com
Origin: http://4mrdx12.[domain].com
Referer: http://4mrdx12.[domain].com/SubmitReq
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36
X-Requested-With: XMLHttpRequest
------WebKitFormBoundarylAheeBUHfdXrokSY
Content-Disposition: form-data; name="dlgFile"; filename="TestFile.xlsx"
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet


------WebKitFormBoundarylAheeBUHfdXrokS

Windows 7 - Headers - HTTP 200

Request URL: http://4mrdx12.[domain].com/SubmitReq
Request Method: POST
Status Code: 200 OK
Remote Address: [removed]
Referrer Policy: no-referrer-when-downgrade
Cache-Control: private
Content-Length: 21881
Content-Type: text/html; charset=utf-8
Date: Fri, 09 Mar 2018 18:43:52 GMT
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 64545954
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarylAheeBUHfdXrokSY
Cookie: __AntiXsrfToken=beef66457cc54cbe9488fc0496042a16
Host: 4mrdx12.[removed].com
Origin: http://4mrdx12.[domain].com
Referer: http://4mrdx12.[domain].com/SubmitReq
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36
X-Requested-With: XMLHttpRequest
------WebKitFormBoundarylAheeBUHfdXrokSY
Content-Disposition: form-data; name="dlgFile"; filename="TestFile.xlsx"
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Windows 7 - Headers - Redirect

Request URL: http://4mrdx12.[domain].com/TUReqSuccess.aspx?ID=100060
Request Method: GET
Status Code: 301 Moved Permanently
Remote Address: [removed]
Referrer Policy: no-referrer-when-downgrade
Content-Length: 160
Content-Type: text/html; charset=utf-8
Date: Fri, 09 Mar 2018 18:43:52 GMT
Location: /TUReqSuccess?ID=100060
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Cookie: __AntiXsrfToken=beef66457cc54cbe9488fc0496042a16
Host: 4mrdx12.[domain].com
Referer: http://4mrdx12.[domain].com/SubmitReq
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36
ID: 100060

Upvotes: 2

Views: 1096

Answers (1)

Gerard H. Pille
Gerard H. Pille

Reputation: 2578

The reason for the performance degradation is the use of websocket, which should be avoided for file uploads. An older discussion, Large file upload with WebSocket, but seeing your results, still valid.

Upvotes: 1

Related Questions