标题重写为:Connection to 127.0.0.1:3446 was actively refused by the target machine
P粉497463473
P粉497463473 2023-08-27 13:30:24
[PHP讨论组]
<p>我正在使用 WCF4.0 模板 -REST。我正在尝试创建一种使用流上传文件的方法。</p> <p>问题总是发生在</p> <pre class="brush:php;toolbar:false;">Stream serverStream = request.GetRequestStream();</pre> <p>流式传输类:</p> <pre class="brush:php;toolbar:false;">namespace LogicClass { public class StreamClass : IStreamClass { public bool UploadFile(string filename, Stream fileStream) { try { FileStream fileToupload = new FileStream(filename, FileMode.Create); byte[] bytearray = new byte[10000]; int bytesRead, totalBytesRead = 0; do { bytesRead = fileStream.Read(bytearray, 0, bytearray.Length); totalBytesRead += bytesRead; } while (bytesRead &gt; 0); fileToupload.Write(bytearray, 0, bytearray.Length); fileToupload.Close(); fileToupload.Dispose(); } catch (Exception ex) { throw new Exception(ex.Message); } return true; } } }</pre> <p>REST 项目:</p> <pre class="brush:php;toolbar:false;">[WebInvoke(UriTemplate = "AddStream/{filename}", Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)] public bool AddStream(string filename, System.IO.Stream fileStream) { LogicClass.FileComponent rest = new LogicClass.FileComponent(); return rest.AddStream(filename, fileStream); }</pre> <p>Windows 窗体项目:用于测试</p> <pre class="brush:php;toolbar:false;">private void button24_Click(object sender, EventArgs e) { byte[] fileStream; using (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(); } string baseAddress = "http://localhost:3446/File/AddStream/stream.txt"; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(baseAddress); request.Method = "POST"; request.ContentType = "text/plain"; Stream serverStream = request.GetRequestStream(); serverStream.Write(fileStream, 0, fileStream.Length); serverStream.Close(); using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { int statusCode = (int)response.StatusCode; StreamReader reader = new StreamReader(response.GetResponseStream()); } }</pre> <p>我已关闭防火墙和 Internet 连接,但错误仍然存在。有没有更好的方法来测试上传方法?</p> <p>堆栈跟踪:</p> <blockquote> <p>在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress 套接字地址) 在 System.Net.ServicePoint.ConnectSocketInternal(布尔 connectFailure、Socket s4、Socket s6、Socket&amp; 套接字、IPAddress&amp; 地址、ConnectSocketState 状态、IAsyncResult asyncResult、Int32 超时、Exception&amp; 异常)</p> </blockquote><p><br /></p>
P粉497463473
P粉497463473

全部回复(2)
P粉254077747

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

P粉270842688

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号