背景
最近在使用EFCore去連接阿里雲上面的數據庫進行開發的時候,當自己在Debug模式下總是提示下面的報錯信息,然后找了好久都沒有解決,報錯信息如下:
an exception has been raised that is likely due to a transient failure. Consider enabling transient error resiliency by adding 'EnableRetryOnFailure()' to the 'UseSqlServer' call.
---> System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - 信號燈超時時間已到)
---> System.ComponentModel.Win32Exception: 信號燈超時時間已到
而且這個在連接到本地數據庫的時候沒有出現過這個問題,所以初步確定是由於連接到阿里雲上面的數據庫時候,由於一些網絡問題造成在調試狀態下出現這個問題,那么到底該進行怎樣的配置才能夠解決這個問題呢?最近經過多方努力找到了這個問題的解決方案,先來看看是如何解決的。
解決方案
在當前的數據庫連接字符串中配置Packet Size=512,解決由於網絡傳輸造成網絡包出現異常退出的問題,在實際開發過程中只需要修改appsetting.development.json中ConnectionStrings即可,只有在本地調試的過程中才會出現此問題。
圖一 修改默認的連接字符串
對於為何要進行當前操作,我們來看一看微軟官方對這個的解釋,請點擊這里查看。通過當前文章的解釋我們知道具體值需要我們根據自己業務情況來決定,如果當前業務需要進行大數據量讀寫操作,就可以適當調高當前屬性,否則可以適當調低一點從而避免發生上述問題。