Google Code Prettify

System.Net.Sockets.SocketException (10061): 無法連線,因為目標電腦拒絕連線。

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) 錯誤,首先要確認伺服器是否正在運行,並且應用程式的配
置正確無誤。然後,檢查防火牆設置和網絡連通性。通過系統性地檢查這些方面,你應該能夠找到
並解決問題的根本原因。