如果我尝试在没有 root 的情况下运行使用 HttpListener 的程序,则会引发此异常。
未处理的异常:System.Net.Sockets.SocketException:拒绝访问 在 System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end) [0x00000] 中:0 在 System.Net.EndPointListener..ctor (System.Net.IPAddress addr, Int32 port, Boolean secure) [0x00000] in :0 在 System.Net.EndPointManager.GetEPListener (System.Net.IPAddress addr, Int32 port, System.Net.HttpListener listener, Boolean secure) [0x00000] in :0 在 System.Net.EndPointManager.AddPrefixInternal (System.String p, System.Net.HttpListener listener) [0x00000] in :0 在 System.Net.EndPointManager.AddListener (System.Net.HttpListener listener) [0x00000] in :0
如何允许 HttpListener 被 root 以外的用户使用?
如果您希望它侦听端口 80,则需要由 root 用户启动。如果您同意它侦听大于 1024 的端口,那么任何用户都应该能够启动它。
如果您希望其他用户能够在端口 80 上开始侦听,那么您需要允许他们通过 sudo 运行它。