2015-11-02 55 views
0

我使用的是Silverlight 5,.NET 4.5.1和OpenRIA。Silverlight OpenRIA - 重複請求

silverlight客戶端調用一個長期運行的OpenRIA操作。該操作是異步的。從客戶端我可以看到代碼中的函數只被調用一次。另一方面,在IIS服務器端,WCF函數被多次調用。

我通過Fiddler記錄了 - 操作完成時發生錯誤。它被調用一次,但有消息「注:此請求被接收手術後重試失敗。」

請求:

GET http://localhost:11213/ClientBin/KEEP-Web-Services-PayrollListService.svc/binary/GetPayrollList?payrollListId=efb1df5d-993a-4c4b-9fe6-013561547632 HTTP/1.1 
    Accept: */* 
    Referer: http://localhost:11213/ClientBin/KEEP.xap 
    Accept-Language: pl 
    Accept-Encoding: gzip, deflate 
    User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko 
    Host: localhost:11213 
    DNT: 1 
    Connection: Keep-Alive 
    Cookie: .KEEP_ASPXAUTH_iPersonel=8673CF25C5650AE86CE77A22B9C9A9D20E7588A077E5EADFFE8F5090F08B48639C9F309B1720BC4AD0D4DE342F149D52234DD8C5F15C0B0CCAD5A074C91E8F14B74FC27D7740A91614DECE034A9F99186375ACEB887E610B32CEA5786BF5EA02D35F144BC49D1E4C254478385EEB4D7E8811959E5494D9D6E9F17D698FCBDC93 

響應:

HTTP/1.1 504 Fiddler - Receive Failure 
Date: Wed, 28 Oct 2015 13:06:41 GMT 
Content-Type: text/html; charset=UTF-8 
Connection: close 
Cache-Control: no-cache, must-revalidate 
Timestamp: 14:06:41.238 

[Fiddler] ReadResponse() failed: The server did not return a complete response for this request. Server returned 0 bytes.                                                                                                  

的情況發生在本地和遠程IISExpres和IIS 7.5中。

UPDATE 1.

我發現導致操作重複的原因。

無法分配134217728字節的管理內存緩衝區。 可用內存量可能很低。

我可以用OpenRIA(以前的wcf-ria-services)來處理它嗎?我看不到任何自定義綁定對OpenRIA有任何影響。

+0

你能發佈完整的請求?我在猜測一些http標題,比如「retry-after」 – mCasamento

+0

@mCasamento - 我編輯了我的帖子。沒有像「retry-after」這樣的標題。 – Bruniasty

+0

我明白了。我已經看到了504個錯誤,其中0個字節超過了1M次,但一直是服務器端錯誤。只要在調試器中打開「所有CLR異常」,就可以清楚地表明錯誤。你試過這個嗎? 回想一下,你已經實現了一個長輪詢模式(comet like),但是請求在配置的超時時間爲15s之前得到了一個504,對吧? – mCasamento

回答

1

問題是32位的IIS。使用64位版本解決了這個問題。

P.S. Visual Studio可以選擇使用64位的IIS-Express。您還可以添加到註冊表:

reg add HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\WebProjects /v Use64BitIISExpress /t REG_DWORD /d 1 

12.0 - 的Visual Studio 2013,因爲它出現在提琴手原始部分