标题重写为: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
618
<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 超时、Exception& 异常)</p>
</blockquote><p><br /></p>            
P粉497463473
P粉497463473

全部回复(2)
P粉254077747

您不必重新启动电脑。而是重新启动 IIS。

P粉270842688

“主动拒绝”意味着当您尝试连接时主机发送了重置而不是确认。因此,这在您的代码中不是问题。防火墙阻止连接,或者托管服务的进程未侦听该端口。这可能是因为它根本没有运行或者因为它正在侦听不同的端口。

启动托管服务的进程后,请尝试使用netstat -anb(需要管理员权限)来验证它是否正在运行并侦听预期的端口。

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!