SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: tepeyolotl en Jueves 3 de Junio de 2010, 17:49

Título: Parametros en Threads y Windows Server 2003 R2
Publicado por: tepeyolotl en Jueves 3 de Junio de 2010, 17:49
Hola que tal, pues bien he estado desarrollando una aplicación en C#, que implementa servidores SSL y por lo tanto Threads, la aplicación en la máquina de desarrollo (WinXP Pro, VS2008) funciona de maravilla tanto debug como release, sin embargo cuando la ejecuto en la máquina donde quedara instalada (Windows Server 2003 R2, .net Framework 3.5 SP1) simplemente se muere, sin dar aviso ni nada por el estilo (ni siquiera registra excepciones en los logs). Ahora al momento de revisar los logs, me doy cuenta de que al parecer al inicializar un thread ocurre un error al leer los parametros del mismo, ya que se corta cuando se trata de leer alguno de ellos.

Asi inicio el thread:
Código: C#
  1. ListeningThread = new Thread(new ParameterizedThreadStart(ServerThread));
  2.                 ListeningThread.Name = "ListeningThread";
  3.                 ListeningThread.IsBackground = true;
  4.                 ThreadList.Add(ListeningThread);
  5.  
  6.                 myLog.Add("{ThID:{" + Thread.CurrentThread.ManagedThreadId.ToString() + "}Thread de servidor lanzado");
  7.                
  8.                 string Datos = ListeningIP.ToString() + ":" + Port.ToString();
  9.                 ListeningThread.Start((object)Datos);
  10.  


Y este es el thread que ejecuto:
Código: C#
  1. public void ServerThread(object EndPoint) //EndPoint = IP:Puerto (en string)
  2.         {
  3.             // Crea un socket TCP/IP (IPv4) y escucha por conexiones.
  4.             try
  5.             {
  6.                 string Parametros = (string)EndPoint;
  7.                 myLog.Add("--ThID:{" + Thread.CurrentThread.ManagedThreadId.ToString() + "}Datos recibidos en el thread: " + (string)EndPoint);
  8.                 string[] Datos = Parametros.Split(':');
  9.                 if (Datos.Length < 2)
  10.                     throw new Exception("Error en parametros");
  11.                 System.Net.IPAddress LocalIP = System.Net.IPAddress.Parse(Datos[0]);
  12.                 int LocalPort = Int32.Parse(Datos[1]);
  13.  
  14.                 myLog.Add("--ThID:{" + Thread.CurrentThread.ManagedThreadId.ToString() + "}--Entrando a Thread de Servidor--");
  15.                 myLog.Add("--ThID:{" + Thread.CurrentThread.ManagedThreadId.ToString() + "}--IP para escuchar: " + LocalIP.ToString() + ":" + LocalPort.ToString());                
  16.                
  17.                 TcpListener listener = new TcpListener(LocalIP, LocalPort);
  18.                 myLog.Add("--ThID:{" + Thread.CurrentThread.ManagedThreadId.ToString() + "} Datos Listener" + listener.LocalEndpoint.ToString());//+ "--" + listener.Server.LocalEndPoint.ToString());
  19.                 listener.Start();
  20.  
  21.                 myLog.Add("--ThID:{" + Thread.CurrentThread.ManagedThreadId.ToString() + "}TCP Listener creado y funcionando");
  22.                
  23.                 do
  24.                 {
  25.                     myLog.Add("--ThID:{" + Thread.CurrentThread.ManagedThreadId.ToString() + "}Esperando por clientes");
  26.                    
  27.                     TcpClient client = listener.AcceptTcpClient();
  28.  

Alguien tiene ideas de que es lo que pueda estar pasando? A mi ya se me están acabando las ideas  :( . De antemano gracias.
Título: Re: Parametros en Threads y Windows Server 2003 R2
Publicado por: Jeysscarr en Jueves 3 de Junio de 2010, 21:40
Revisa el firewall... ejecutalo en modo de compatibilidad, asi vas desmenuzando posibles causas del error
Título: Re: Parametros en Threads y Windows Server 2003 R2
Publicado por: tepeyolotl en Viernes 4 de Junio de 2010, 19:12
Gracias por la respuesta, en cuanto a lo que mencionas:
-El Firewall de Windows está desactivado
-No se ha instalado otra aplicación aquí (es recién formateado el server)
-La instalo y ejecuto como Administrador y nada de esto parece servir.
 :hitcomp: