標題重寫為:Connection to 127.0.0.1:3446 was actively refused by the target machine
P粉497463473
P粉497463473 2023-08-27 13:30:24
0
2
583
<p>我正在使用 WCF4.0 範本 -REST。我正在嘗試創建一種使用流上傳文件的方法。</p> <p>問題總是發生在</p>
Stream serverStream = request.GetRequestStream();
; <p>串流類別:</p>
 命名空間 LogicClass
{
    公共類別 StreamClass :IStreamClass
    {
        公有布林UploadFile(字串檔名,流檔流)
        {
            嘗試
            {
                FileStream fileToupload = new FileStream(檔案名稱, FileMode.Create);
                byte[] bytearray = 新字節[10000];
                int bytesRead, 總位元組數 = 0;
                做
                {
                    bytesRead = fileStream.Read(bytearray, 0, bytearray.Length);
                    讀取總位元組數 = 讀取位元組數;
                while (bytesRead > 0);

                fileToupload.Write(bytearray, 0, bytearray.Length);
                fileToupload.C​​lose();
                fileToupload.Dispose();
            }
            catch (Exception ex) { 拋出新的 Exception(ex.Message); }
            返回真;
        }
    }
}</pre>
<p>休息項目:</p>
[WebInvoke(UriTemplate = "AddStream/{filename}", Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
public bool AddStream(字串檔名, System.IO.Stream fileStream)
{
    LogicClass.FileComponent 休息 = new LogicClass.FileComponent();
    返回rest.AddStream(檔名, fileStream);
}</pre>
<p>Windows 表格項目:用於測試</p>
<pre class="brush:php;toolbar:false;">private void button24_Click(object sender, EventArgs e)
{
    位元組[]檔案流;
    使用 (FileStream fs = new FileStream("E:\stream.txt", FileMode.Open, FileAccess.Read, FileShare.Read))
    {
        fileStream = new byte[fs.Length];
        fs.Read(fileStream, 0, (int)fs.Length);
        fs.Close();
        fs.Dispose();
    }

    字串baseAddress =“http://localhost:3446/File/AddStream/stream.txt”;
    HttpWebRequest 請求 = (HttpWebRequest)HttpWebRequest.Create(baseAddress);
    請求方法 = "POST";
    request.ContentType = "文字/純文字";
    流 serverStream = request.GetRequestStream();
    serverStream.Write(fileStream, 0, fileStream.Length);
    serverStream.Close();
    使用 (HttpWebResponse 回應 = request.GetResponse() 作為 HttpWebResponse)
    {
        int statusCode = (int)response.StatusCode;
        StreamReader 讀取器 = new StreamReader(response.GetResponseStream());
    }
}</pre>
<p>我已關閉防火牆和互聯網連接,但錯誤仍然存在。有沒有更好的方法來測試上傳方法? </p>
<p>堆疊追蹤:</p>
<blockquote>
<p>在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress 套接字位址)
在 System.Net.ServicePoint.ConnectSocketInternal(布林 connectFailure、Socket s4、Socket s6、Socket& 套接字、IPAddress& 位址、ConnectSocketState 狀態、IAsyncResult asyncResult、Int32 逾時);
</blockquote><p><br /></p>            
P粉497463473
P粉497463473

全部回覆(2)
P粉254077747

您不必重新啟動電腦。而是重新啟動 IIS。

P粉270842688

「主動拒絕」表示當您嘗試連線時主機發送了重置而不是確認。因此,這在您的程式碼中不是問題。防火牆阻止連接,或託管服務的進程未偵聽該連接埠。這可能是因為它根本沒有運行或因為它正在偵聽不同的連接埠。

啟動託管服務的進程後,請嘗試使用netstat -anb(需要管理員權限)來驗證它是否正在執行並偵聽預期的連接埠。

更新:在 Linux 上,您可能需要執行 netstat -anp

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!