我有一個啓動時執行以下操作的Windows服務。當通過控制檯應用程序運行時,它工作正常,但是一旦我放入Windows服務,我會得到下面的異常。以下是我迄今爲止嘗試:SocketException阻止在Windows服務中使用C#TCPListener
- 禁用防火牆,也嘗試添加明確排除的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)
您能告訴我們您用來配置端點的代碼嗎? 這裏有更多的信息,但我不知道它會幫助你 http://support.microsoft.com/kb/819124 – TimothyP 2010-05-06 09:42:04
當然,端點設置使用「新IPEndPoint(IPAddress.Parse(args [0] ),Convert.ToInt32(args [1]))「。這些參數通過服務控制面板傳入,並且我確認本地計算機的IP地址設置爲192.168.2.2,端口設置爲20000,儘管我也嘗試了其他端口。 – JoeGeeky 2010-05-06 09:59:28
你在運行什麼操作系統? .NET框架的哪個版本?另外,你可以確保沒有內核模式或用戶模式進程綁定到該端口(netstat -n -a -P TCP)嗎? – feroze 2010-05-06 17:16:48