2012-07-05 31 views
11

所以我在考慮用戶粘貼鏈接的功能,服務器端代碼抓取提供的鏈接並響應該鏈接的內容(如頁面標題,說明,縮略圖等)。當請求被中止時,IIS/C#中發生了什麼

用戶可以同時更改鏈接,並在這樣做的時候,應該中止客戶端的ajax請求。

我想知道究竟發生在IIS服務器,特別是我的C#代碼。

  • 響應線程是否終止?
  • Response對象現在是否返回null或Response.Write拋出異常?
  • 是在響應線程中拋出異常嗎? (一個甚至沒有道理,但無論如何)

回答

4

如果服務器代碼檢查Response.IsClientConnected的狀態,它可以停止工作並在客戶端中止請求時產生空的響應,否則它將像平常一樣完成請求。

請求處理不會因爲沒人再等待而自動中止。服務器代碼必須主動檢查請求的狀態。

2

您的Web服務器不知道客戶端取消了請求。該請求仍將被滿足,並且回覆將被髮回。您編寫的客戶端腳本需要能夠處理頁面的當前狀態。

如果你確信你不關心的迴應,我會建議中止請求的客戶端:

xhr.abort() 
+1

那麼我的網絡服務器的代碼執行完成?那麼中止請求會有什麼意義呢? – bevacqua 2012-07-05 18:19:09

+1

所以通常有兩個步驟(簡化)爲Ajax請求。 1.啓動請求。 2.做出迴應(成功或失敗回調)。如果您中止請求,那麼您的回調方法將不必處理響應。 – 2012-07-05 18:43:01

0

如果關閉了連接客戶端的響應寫入一個錯誤,說明前儘可能多的拋出。您可以選擇不處理來自服務器的響應。

0

一旦請求發佈到服務器,IIS將開始執行服務器端代碼。現在服務器可以決定代碼是否需要執行。

在整個頁面循環中,您可以按Guffa所述檢查Request.IsClientConnected並終止執行。

但是,它完全取決於你的情況。

希望它有幫助。

相關問題