我需要什麼超時或設置改變?
摘要
我有一個網站,讓一個XHR API調用一個asp.net網頁API網站。它正在上傳圖片。它將圖像作爲帶有Base64Content屬性的json對象發送。這些字節由base64編碼並由web api站點自動解碼。
我有我的網站項目設置在Visual Studio與調試,我也可以建立它並從IIS運行它。
我已經試過
一個。如果我使用Telerik Fiddler Web Debugger測試api調用web api rest站點,它會成功。這意味着,如果請求成功到達web api服務器,它將成功。所有的後端代碼都很好。
B。當Chrome調試器失敗時,將原始請求放入調試器工具中。我可以把這個原始請求,複製/粘貼到提琴手,它的作品。負責生成請求的網站的ajax部分都很好(請求由ajax代碼正確形成)。
C。如果我在使用IIS Express的Visual Studio中進行調試時運行我的網站,我沒有問題。它只發生在IIS中。整個web.config
是相同的。
D。如果我通過網頁(使用Chrome)對網頁進行測試,它會成功讀取一個500kb的文件,但會失敗並顯示一個1兆文件。
E。當它失敗時,這個請求沒有記錄到web api服務器。我已經完全追蹤,沒有任何顯示。
失敗時,無論文件大小如何,它都會在5秒鐘失敗。因此,我得出結論:導致失敗的不是文件大小,而是任何需要超過5秒的上載。
我的設置
我無法找到我需要改變,我還沒有改變任何設置。
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true" targetFramework="4.5.1"/>
<httpRuntime targetFramework="4.5"
maxRequestLength="2097152"
delayNotificationTimeout="360"
executionTimeout="360"
defaultRegexMatchTimeout="360"
/>
</system.web>
請求日誌
491472: URL_REQUEST
http://tmorrow-12v.hs.com/HS.REST.HomeownerPortal/api/tickets/281/images
Start Time: 2015-10-20 18:51:35.464
t=2876 [st= 0] +REQUEST_ALIVE [dt=4996]
t=2876 [st= 0] URL_REQUEST_DELEGATE [dt=14]
t=2890 [st= 14] +URL_REQUEST_START_JOB [dt=4982]
--> load_flags = 73986 (BYPASS_CACHE | MAYBE_USER_GESTURE | REPORT_RAW_HEADERS | VERIFY_EV_CERT)
--> method = "POST"
--> priority = "LOW"
--> upload_id = "0"
--> url = "http://tmorrow-12v.hs.com/HS.REST.HomeownerPortal/api/tickets/281/images"
t=2890 [st= 14] URL_REQUEST_DELEGATE [dt=1]
t=2891 [st= 15] HTTP_CACHE_GET_BACKEND [dt=0]
t=2891 [st= 15] URL_REQUEST_DELEGATE [dt=0]
t=2891 [st= 15] +HTTP_STREAM_REQUEST [dt=1]
t=2891 [st= 15] HTTP_STREAM_REQUEST_STARTED_JOB
--> source_dependency = 491473 (HTTP_STREAM_JOB)
t=2892 [st= 16] HTTP_STREAM_REQUEST_BOUND_TO_JOB
--> source_dependency = 491473 (HTTP_STREAM_JOB)
t=2892 [st= 16] -HTTP_STREAM_REQUEST
t=2892 [st= 16] +HTTP_TRANSACTION_SEND_REQUEST [dt=4980]
t=2892 [st= 16] HTTP_TRANSACTION_SEND_REQUEST_HEADERS
--> POST /HS.REST.HomeownerPortal/api/tickets/281/images HTTP/1.1
Host: tmorrow-12v.hs.com
Connection: keep-alive
Content-Length: 2632959
Pragma: no-cache
Cache-Control: no-cache
Authorization: Basic [52 bytes were stripped]
Origin: http://tmorrow-12v.hs.com
HSHO-Cookie: UserProfile=userid=31&username=tmorrow%40hyphensolutions.com&appguid=a967da12-2965-4b23-921b-ed8a386649f4&buildproappguid=0b43e124-7755-4194-a441-1836f8e6db48&loginexpiration=10%2f21%2f2015+12%3a00%3a00+AM&Expires=10%2f21%2f2015+12%3a00%3a00+AM&reqver
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
Content-Type: application/json; charset=UTF-8
Accept: application/json, text/plain, */*
Referer: http://tmorrow-12v.hs.com/homeownerportal/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Cookie: [38 bytes were stripped]
t=2892 [st= 16] HTTP_TRANSACTION_SEND_REQUEST_BODY
--> did_merge = false
--> is_chunked = false
--> length = 2632959
t=7872 [st=4996] CANCELLED
t=7872 [st=4996] -URL_REQUEST_START_JOB
--> net_error = -3 (ERR_ABORTED)
t=7872 [st=4996] URL_REQUEST_DELEGATE [dt=0]
t=7872 [st=4996] -REQUEST_ALIVE
你嘗試加入超時Ajax調用?如果您使用的是jQuery ajax函數,那麼錯誤處理程序可能會引發導致失敗的問題。 –
@PankajKapare,謝謝。我在AngularJS中使用$ http。傳遞給失敗塊的對象爲null。客戶端代碼沒有使用超時。當它在IIS Express中運行時,它可以正常工作,因此不會有任何Angular時間有效(或者我推理)。無論如何,我爲'$ http'嘗試了'timeout',並將其設置爲3000(3秒),以查看它會做什麼。它沒有效果。 – toddmo