我有這個簡單的控制器,它的Get
方法與Ajax調用通過實體框架存儲庫查找郵編。如何在ASP.NET Web API中處理OperationCanceledException?
[Authorize]
public class ZipCodesApiController : AppApiController
{
public ZipCode Get(string zipCode)
{
return unitOfWork.ZipCodeRepository
.Get(x => x.Zip == zipCode)
.FirstOrDefault();
}
}
在生產中,我的日誌顯示System.OperationCanceledException: The operation was canceled.
拋出經常。我認爲發生的事情是用戶正在查看地址詳細信息頁面,但在ajax郵政編碼查找返回之前導航或關閉瀏覽器。我猜IIS是告訴我的控制器他們不再連接,.NET框架會拋出異常?
這似乎是無害的,但它似乎是一個壞主意,將調用ZipCodeRepository包裝在try
中,並且有一個空的OperationCanceledException
catch子句。
我已經使用了錯誤,它似乎在並行編程中出現很多,這並不是我特別熟悉的東西。
什麼是處理此異常的適當方法?我認爲這是可以忽略的,但我錯了嗎?應該提醒實體框架以便它可以清理一些東西(我的AppApiController至少有一個dispose方法)?
只是FYI ...不是你的問題的答案,但在最新版本的Web API中,如果你有一個像這樣的公共異步任務獲取(字符串zipCode,CancellationToken標記)'的操作,你可以註冊令牌取消,這將在客戶端斷開連接的情況下調用。 –
如果您在下游使用其他異步API,那麼傳遞此取消令牌是很好的,這樣您就可以讓他們有機會清理任何可能需要的東西 –