2010-03-11 24 views
2

我有一個silverlight 3應用程序,它向WCF服務發出幾個長時間運行的請求。在進行這些調用的過程中,任何其他稍後的WCF調用都會被silverlight 3排隊,因爲它只會同時執行兩個請求,從而導致應用程序吮吸:(如何從Silverlight中取消長時間運行的WCF請求3

如何取消長時間運行的阻止請求?

回答

-1

沒有直接回答你的問題,但你可以使兩個以上同時傳出HTTP請求。

如果你的應用程序使得很多傳出HTTP請求的,你會被淨節流。默認情況下,淨只支持兩個同時發送的http請求,爲了解決這個問題,你需要在app.config中添加一個system.net部分。

這是一個示例代碼片段。

<system.net> 
    <defaultProxy> 
     <proxy usesystemdefault="false" bypassonlocal="true" /> 
     <bypasslist> 
      <add address = "[^.]+\.[^.]+\.ntwk\.msn\.net$" /> 
      <add address = "[^.]+\.phx\.gbl$" /> 
     </bypasslist> 
    </defaultProxy> 
    <connectionManagement> 
     <add address = "*" maxconnection = "12" /> 
    </connectionManagement> 
</system.net> 
+0

這是否適用於Silverlight? – Kim 2010-03-31 00:15:33

+0

不,它不適用於SL。 SL默認使用瀏覽器http堆棧,IE上限制爲6,chrome限制爲6,FF上限制其他數量。您可以將其切換爲使用客戶端http堆棧,但是您不能使用cookie或asp.net表單身份驗證,並且在所有瀏覽器上仍然限制爲6。 – Kir 2011-08-23 16:59:45

1

我所知道的是不幸的是調用Abort()你的代理,但要小心的唯一方法,你需要創建它之後一個新的實例(並重新訂閱已完成事件),因爲它關閉底層連接。另外請注意,這會消除當前異步請求中的全部,因此您需要在調用其他請求之前調用它。