You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#控制台搭建Web服务器遇权限错误及端口检测咨询

C# 简易Web服务器问题解决方案

问题1:Socket权限错误与可用端口检测

针对System.Net.Sockets.SocketException: 'An attempt was made to access a socket in a way forbidden by its access permissions'错误,可通过以下方式检测并使用可用端口:

  • 命令行检查端口占用:执行netstat -ano | findstr ":端口号"(例如netstat -ano | findstr ":1043"),若返回结果则说明端口被其他进程占用,需更换端口。
  • 让系统自动分配可用端口:无需硬编码端口,将TcpListener的端口参数设为0,系统会自动分配未被占用的端口,示例代码:
var ipAddress = IPAddress.Parse("127.0.0.1");
var serverListener = new TcpListener(ipAddress, 0); // 0表示自动分配端口
serverListener.Start();
var port = ((IPEndPoint)serverListener.LocalEndpoint).Port;
Console.WriteLine($"Server started on port {port}.");
  • 以管理员身份运行应用:部分端口(如1-1024)需要管理员权限才能绑定,右键控制台应用的可执行文件,选择“以管理员身份运行”。

问题2:ArgumentOutOfRangeException 错误翻译与修复

错误信息翻译

未处理的异常: System.ArgumentOutOfRangeException: 索引和长度必须引用字符串内的位置。
参数名: length

错误原因及修复

原代码的HTTP响应格式不符合HTTP协议规范,导致字符串处理时抛出异常:

  1. HTTP响应头与正文之间必须用空行分隔
  2. Content-Type字段格式错误,分号后不应换行,正确格式为text/plain; charset=UTF-8
  3. Content-Length字段后缺少空格,正确格式为Content-Length: {contentLength}

修复后的响应字符串代码:

var response = $@"HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
Content-Length: {contentLength}

{content}";

注意Content-Length行末尾添加一个空行,再拼接正文内容,确保HTTP响应格式正确。

内容的提问来源于stack exchange,提问作者Marky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:20:13