Problema:El código .NET se ejecuta desde un directorio, pero no desde otro, en el mismo disco [cerrado]

StackOverflow https://stackoverflow.com/questions/126228

  •  02-07-2019
  •  | 
  •  

Pregunta

Nuestra aplicación es una aplicación híbrida Win32 no administrada y una aplicación administrada .NET 2.0.La parte de Win32 es el ejecutable principal, que en algún momento carga y aloja el tiempo de ejecución de .NET 2.0 y carga algunos módulos administrados para abrir nuevas ventanas de Winforms.

Hemos tenido algunos problemas tipo CASPOL, pero hoy tenemos un problema muy extraño y espero que alguien pueda darme algunos consejos o ideas, o básicamente cualquier cosa, que pueda desencadenar algo que pueda ayudar. nosotros solucionemos esto.

En un servidor al que se accede a través de citrix, si los archivos de la aplicación están ubicados en un directorio ubicado en el escritorio del usuario que ha iniciado sesión actualmente, que es un administrador de servidor/dominio, el programa funciona bien.Las ventanas .NET se abren como se esperaba.

Sin embargo, si movemos el directorio a la raíz del mismo disco, que es un disco físico en el servidor (por lo que no hay mapeo SAN ni nada que pueda activar un comando CASPOL que yo sepa) y mantener todo lo demás igual, mismo usuario, misma configuración, etc., la aplicación falla silenciosamente cuando intentamos invocar las ventanas .NET.Se bloquea simplemente desapareciendo, lo que sugiere que podría ser algo así como un desbordamiento de pila.Estamos pensando en agregar registros a algunas partes de la aplicación para tal vez poder descubrir qué sucede y dónde, pero también publicaré esta pregunta aquí.

Hasta ahora hemos verificado que no hay rarezas en la lista de acceso de CASPOL, nada extraño en el caché NGEN (estaba pensando que tal vez había imágenes corruptas de antes, si el propietario del servidor había jugado con ellas), y no hay rarezas en el GAC (no usamos GAC para las asambleas).

Resumido:

  • Si el programa se ejecuta desde el directorio U:\Documents and Settings\USERNAME\Desktop\, funciona
  • Si se ejecuta desde el directorio U:\, no
  • Ud:es un disco físico en el servidor
  • No hay rarezas aparentes en los cachés NGEN o GAC
  • Se instaló el tiempo de ejecución .NET correcto, se instalaron los archivos correctos para nuestra aplicación (y de hecho funcionan bien si se ejecuta desde la ubicación del escritorio)

¿Alguien con algo que pueda ayudar?

Editar: Problema vuelto a preguntar aquí con información diferente/otra, y "resuelto".

¿Fue útil?

Solución

Mi primer intento sería ejecutar el monitor de procesos desde MS-Sysinternals y ver qué llamadas/resultados son diferentes para estas dos ocasiones.Tal vez eso le dé algunas pistas para trabajar (resultados diferentes para la misma llamada, algunos errores en la ejecución del problema que no son buenos...)

Puede descargar el monitor de procesos desde MS:http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

Otros consejos

Precisamente tuve ese problema hace algún tiempo.Después de muchos tirones de pelo encontré el problema.

Tenga mucho cuidado cuando use Process.Start() o cualquier llamada de este tipo, porque dependiendo de cómo lo inicie, puede usar una variedad de carpetas como entorno de trabajo (ruta actual, entorno del sistema, etc.).

Lo primero que pienso es que debes asegurarte de que no haya rutas relativas/absolutas definidas en el programa para referencias a ensamblajes, archivos, etc.que están causando problemas al mover el directorio raíz de la aplicación.

¿Es posible que esté relacionado con los privilegios del usuario?ejecutarlo desde Luz de error LUA verificar.Incluso si no está directamente relacionado, esa herramienta puede dar algunos consejos útiles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top