3ENGINE

Programación y otros cachivaches

Etiqueta: Windows

Página 1/4

Tecnologia

Acceso a IIS Express desde un equipo remoto


IIS Express es el servidor de desarrollo de ASP.NET que viene incorporado en Visual Studio y que también está disponible de manera gratuita para su descarga.

Esta versión recortada de IIS es perfectamente válida para desarrollos aunque esto no quita que al final para entornos de producción debas hacer el deploy en un IIS real.

Acceso desde un equipo remoto

A veces necesitamos hacer público el acceso al IIS Express para hacer pública nuestra aplicación. Por ejemplo para comprobar que la aplicación funciona en otros navegadores no disponibles en el entorno de producción, para que otras personas del equipo validen los desarrollos o simplemente porque no disponemos de un IIS real, etc..

Pasos

  1. Permitir conexiones de entrada
  2. * En Windows casi todas la conexiones de entrada están bloqueadas. Para comprobar conexiones de entrada permitidas ejecuta:

    > netsh http show urlacl
    

    * Para permitir conexiones ejecuta:

    > netsh http add urlacl url=http://08APC0501:61277/ user=todos
    

    donde url es la IP o nombre de máquina + puerto a publicar y user el nombre de usuario o grupo de usuarios (‘todos’ es ‘everyone’ si el S.O está en inglés)

  3. Añadir un regla al Firewall de Windows
  4. > netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=61277 profile=private remoteip=localsubnet action=allow
    

  5. Modificar applicationhost.config
  6. Es posible que necesites modificar el archivo de configuración de IIS Express.
    Normalmente se encuentra en C:\Users\TuUsuario\Documents\IISExpress\config\applicationhost.config

    <site name="NombreDeTuAplicacion" id="11">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
       <virtualDirectory path="/" physicalPath="C:\Projectes\TuProyecto\NombreProyecto" />
    </application>
    [....]
    <bindings>
    <binding protocol="http" bindingInformation="*:61277:localhost" />
    <binding protocol="http" bindingInformation="*:61277:08APC0501" />
    </bindings>
    </site>
    




Tecnologia

Cómo crear un servicio Windows .NET autoinstalable


Cuando llega la hora de instalar un servicio Windows en .NET, en mucho sitios recomiendan instalar el servicio mediante una utilidad de la línea de comandos llamada installutil.exe

Comandos básicos para instalar y desinstalar un servicio con installutil.exe:

installutil.exe miservicio.exe
installutil.exe /u miservicio.exe

Una vez instalado podéis arrancar y parar el servicio mediante la utilidad net.exe:

net start miservicio.exe
net stop miservicio.exe

Crear un servicio Windows .NET autoinstalable

El problema de installutil.exe es que sólo la encontraras si instalas Visual Studio en el ordenador donde necesitas instalar el servicio. Una solución es crear un proyecto de InstallShield para crear un autoinstalable. Pero yo os cuento una manera mas sencilla de conseguir esto y ahorraros el sufrimiento de utilizar InstallShield 🙂

Antes de nada, el código incluye una directiva DEBUG que permite debugar el servicio como si se tratara de una aplicación de consola. Esto lo expliqué en Debug desde VS.NET de un servicio Windows.

Por último, recomiendo añadir un ProjectInstaller.cs a vuestro servicio tal como explica este enlace en el paso 5. Añadirlo nos permitirá entre otras cosas especificar el tipo de cuenta, el nombre y la descripción del servicio, el modo de arranque, etc.

Código de ejemplo:

using System.ServiceProcess;
using System.Configuration.Install;
using System.Reflection;
using System;
using System.Threading;

namespace MyService
{
    static class Program
    {
        /// 
        /// Punto de entrada principal para la aplicación.
        /// 
        static void Main(string[] args)
        {
            #if (!DEBUG)    
                if (System.Environment.UserInteractive)
                {
                    string parameter = string.Concat(args);
                    switch (parameter)
                    {
                        case "-i":
                        case "-install":
                            try
                            {
                                ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location });
                            }
                            catch
                            {
                            }
                            break;
                        case "-u":
                        case "-uninstall":
                            try
                            {
                                ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location });
                            }
                            catch
                            {
                            }
                            break;
                    }
                }
                else
                {
                    ServiceBase[] ServicesToRun;
                    ServicesToRun = new ServiceBase[] 
                    { 
                        new ServiceWatcher()
                    };
                    ServiceBase.Run(ServicesToRun);
                }

            #else
                // debug mode
                ServiceWatcher service = new ServiceWatcher();
                service.Init();
                Thread.Sleep(Timeout.Infinite);
            #endif
        }
    }
}

Básicamente la idea es que se puede tener un servicio autocontenido para instalar y desinstalar utilizando ManagedInstallerClass como se muestra el ejemplo.

De modo que si compilas el servicio en modo RELEASE para instalar el servicio:

miservicio.exe -install

y para desisntalarlo:

miservicio.exe -uninstall



Tecnologia

Cómo habilitar aplicaciones de 32 bits en IIS7


Si tienes IIS en un Windows 64 bits y necesitas ejecutar una aplicación que es para 32 bits. No hay problema, sigue estos pasos.

Habilitar aplicaciones de 32 bits en IIS7

1. Abre el administrador de Internet Information Services (IIS). Lo puedes encontrar en el panel de herramientas administrativas. Una vez dentro, vete a Conexiones y haz click en Grupos de aplicaciones

2. En el panel de la derecha selecciona el grupo de aplicaciones que necesites.

3. Finalmente haz click en Configuración avanzada y cambia la opción Habilitar apllicaciones de 32 bits a True

Cómo habilitar aplicaciones de 32 bits en IIS7




Tecnologia

Cómo configurar un CGI en IIS7


CGI viene de Common Gateway Interface. Fueron una de las primeras tecnologías de la WWW que permitia a un navegador web solicitar datos de un programa ejecutado en un servidor web. Hoy en día esta en desuso, pero si por algún motivo necesitas hacerlo funcionar, te explico cómo configurar un CGI en IIS7.

Instalar (o configurar) IIS7

Instalar IIS7 desde la pantalla Activar o desactivar características de Windows que se encuentra en Programas y características de Windows 7. Para poder configurar un CGI es necesario activar las opciones CGI, Extensiones y Filtros ISAPI

Cómo configurar un CGI en IIS7

Edita las restricciones de ISAPI y CGI

Abre IIS7, haz doble click en el nombre del servidor en la parte superior y por último click en la opción Restricciones de ISAPI y CGI

Cómo configurar un CGI en IIS7

Ahora agrega una restricción, selecciona tu CGI (que normalmente tendrá extensión .dll o .exe) y activa la casilla Permitir ejecución de la ruta de extensión

Cómo configurar un CGI en IIS7

Edita tu aplicación Web para permitir ejecutar un CGI

Pero por defecto IIS7 no permite que una aplicación ejecute un CGI. Ahora en IIS7 selecciona tu aplicación y doble click en la opción Asignaciones de controlador

Cómo configurar un CGI en IIS7

Una vez dentro modifica los permisos de características del controlador CGI-exe y activa la casilla Ejecutar

Cómo configurar un CGI en IIS7

 

Reinicia IIS7

Para asegurar que IIS7 queda perfectamente configurado es recomendable reiniciarlo. Esto lo puedes hacer bien desde la propia consola de administración de IIS7 o bien desde la consola de comandos con la orden iisreset
 

Habilitar CGI de 32 bits

Si el CGI es una aplicación de 32 bits y IIS es de 64 bits no funcionará sino habilitas la opción. Si quieres saber cómo hacerlo te explico cómo habilitar aplicaciones de 32 bits en II7