【发布时间】:2011-02-16 07:44:05
【问题描述】:
我有一个 Windows 服务,它在启动时会执行以下操作。通过控制台应用程序运行时,它工作正常,但是一旦我放入 Windows 服务,我就会得到以下异常。到目前为止,这是我尝试过的:
- 禁用防火墙,还尝试为 exe、端口和协议添加明确的排除项
- 已检查 CAS 策略配置,显示不受限制的权限
- 将服务配置为作为管理员帐户、本地系统、本地服务和网络服务运行,每个都具有相同的结果
- 尝试了不同的端口
- 也试过 127.0.0.1 只是为了看看...同样的问题
这让我很头疼,所以任何帮助将不胜感激:
代码:
var _listener = new TcpListener(endpoint); //192.168.2.2:20000
_listener.Start();
产生的异常:
Service cannot be started. System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at System.Net.Sockets.TcpListener.Start(Int32 backlog)
at System.Net.Sockets.TcpListener.Start()
at Server.RequestHandler.StartServicingRequests(IPEndPoint endpoint)
at Server.Server.StartServer(String[] args)
at Server.Server.OnStart(String[] args)
at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
【问题讨论】:
-
你能告诉我们你用来配置端点的代码吗?这里有更多信息,但我不确定它会帮助你support.microsoft.com/kb/819124
-
当然,端点是使用“new IPEndPoint(IPAddress.Parse(args[0]), Convert.ToInt32(args[1]))”设置的。这些参数是通过服务控制面板传入的,我已经确认本地机器IP地址设置为192.168.2.2,端口设置为20000,虽然我也尝试过其他端口。
-
您运行的是什么操作系统? .NET 框架的哪个版本?另外,您能否确保没有内核模式或用户模式进程绑定到该端口(netstat -n -a -P TCP)?
标签: c# exception sockets permissions tcplistener