
Tengo un servidor vps (servidor privado virtual) ejecutándose en Linux CentOS 5 de 32 bits, instalé vncserver
el entorno X-Windows, GNOME y KDE y me conecto al servidor VNC desde vncviewer en mi escritorio de Windows 7.
ahora ejecuto el comando
mono Radegast.exe
en la terminal y tengo
[ERROR]: - Unhandled System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.XplatUI ---> System.ArgumentNullException: Could not open display (X-Server required. Check you DISPLAY environment variable)
Parameter name: Display
at System.Windows.Forms.XplatUIX11.SetDisplay (IntPtr display_handle) [0x00000]
at System.Windows.Forms.XplatUIX11..ctor () [0x00000]
at System.Windows.Forms.XplatUIX11.GetInstance () [0x00000]
at System.Windows.Forms.XplatUI..cctor () [0x00000]
--- End of inner exception stack trace ---
at System.Windows.Forms.Application.EnableVisualStyles () [0x00000]
at Radegast.MainProgram.RunRadegast (System.String[] args) [0x00000]
at Radegast.MainProgram.Main (System.String[] args) [0x00000] : An exception was thrown by the type initializer for System.Windows.Forms.XplatUI
at System.Windows.Forms.Application.EnableVisualStyles () [0x00000]
at Radegast.MainProgram.RunRadegast (System.String[] args) [0x00000]
at Radegast.MainProgram.Main (System.String[] args) [0x00000]
la versión mono es
# mono -V
Mono JIT compiler version 2.4.2.3 (tarball Sat Apr 20 19:49:33 MSD 2013)
Copyright (C) 2002-2008 Novell, Inc and Contributors. www.mono-project.com
TLS: __thread
GC: Included Boehm (with typed GC)
SIGSEGV: altstack
Notifications: epoll
Architecture: x86
Disabled: none
Respuesta1
No indica esto explícitamente en su pregunta, pero el error que está encontrando:
[ERROR]: - System.TypeInitializationException no controlado: el inicializador de tipo generó una excepción para System.Windows.Forms.XplatUI ---> System.ArgumentNullException: no se pudo abrir la pantalla (se requiere X-Server. Verifique la variable de entorno DISPLAY) Nombre del parámetro: Pantalla
Parece que estás intentando hacer una de dos cosas:
- Inicie la aplicación mono en un shell que no tiene acceso al escritorio X.
- se está ejecutando como un usuario que no tiene permisos para acceder a la pantalla
Este hilo en elForo de RadegastSuena como tu mismo problema.
Posibles soluciones
Necesitará:
- establezca la variable de entorno $DISPLAY en ":0.0" después de ingresar al vps como el mismo usuario propietario del escritorio X
- ejecútelo
xhost +
como el usuario propietario del escritorio antes de ejecutar su comando mono como otro usuario (¡no olvide configurar la variable $DISPLAY para este otro usuario también!)
Creo que también puedes ejecutar tu comando mono de esta manera:
% XAUTHORITY=/home/$YOURUSER/.Xauthority DISPLAY=:0.0 mono Radegast.exe
NOTA:$YOURUSER es el usuario propietario del X Desktop.
Respuesta2
Si su código de C# tiene la GUI, debe asignarle un $DISPLAY. Puede dar $DISPLAY primero en echo $DISPLAY
su Linux remoto.
Si quieres usar elPDR(Protocolo de escritorio remoto), puede instalar el paquete dexrdp.
$ sudo apt-get install xrdp
conexión al servidor remoto (Remmina, ).
abra la terminal y obtenga $DISPLAY.
$echo $DISPLAY :10.0
ejecutar programa mono con ssh:
$ ssh [email protected] $ export DISPLAY=:10.0 $ mono server.exe > /dev/null 2> /dev/null &