System.Net.Sockets.SocketException (10061) 錯誤通常表示應用程式嘗試連接的伺服器或服
務端口未開啟或拒絕連接。這可能由多種原因引起,如伺服器未啟動、連接端口錯誤、防火牆設置或
網絡問題等。
以下是一些可能的解決方案和診斷步驟:
步驟 1:確認伺服器啟動並運行
確保你嘗試連接的伺服器已經啟動並正在運行。
檢查伺服器的服務是否正在運行。
如果是本地開發,確認伺服器應用是否正在運行。
步驟 2:確認連接端口正確
確保你使用的連接端口是正確的。
檢查應用程式的配置文件,確保使用的端口與伺服器端口一致。
檢查伺服器配置文件,確保它在正確的端口上監聽。
步驟 3:檢查防火牆設置
確認防火牆設置允許連接。
確認防火牆沒有阻止應用程式連接所需的端口。
在伺服器上開啟對應端口的防火牆規則。
步驟 4:檢查網絡連接
確認網絡連接正常。
確認你的應用程式和伺服器在同一網絡或能夠相互訪問。
使用 ping 或 telnet 等工具檢查網絡連通性。
步驟 5:檢查伺服器日誌
查看伺服器日誌文件以獲取更多錯誤信息。
伺服器日誌可能提供有關拒絕連接的更多詳細信息。
根據日誌信息進一步診斷問題。
步驟 6:診斷應用程式配置
確認應用程式的配置是否正確,例如連接字符串或 API URL。
例子:使用 HttpClient 連接 API 服務
假設你在使用 HttpClient 連接到 API 服務,確認你的配置文件(如 appsettings.json)中的 API URL 是正確的。
json
{
"ApiSettings": {
"BaseUrl": "https://yourapi.com/api/"
}
}
確認你的代碼正確使用了這個 URL。
csharp
public class SomeService
{
private readonly HttpClient _httpClient;
public SomeService(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task<string> GetSomeDataAsync()
{
var response = await _httpClient.GetAsync("endpoint");
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
}
使用 Telnet 測試連接
你可以使用 telnet 測試到目標伺服器和端口的連接。
bash
telnet yourapi.com 80
如果連接成功,你會看到類似以下的輸出:
sql
Trying 192.0.2.1...
Connected to yourapi.com.
Escape character is '^]'.
如果連接失敗,會顯示錯誤消息。
總結
要解決 SocketException (10061) 錯誤,首先要確認伺服器是否正在運行,並且應用程式的配
置正確無誤。然後,檢查防火牆設置和網絡連通性。通過系統性地檢查這些方面,你應該能夠找到
並解決問題的根本原因。