9 de diciembre de 2015

Configuración de WCF Service Library con netTcpBinding y IIS Host

De forma predeterminada, IIS sólo admite HTTP o HTTPS. Con el fin de permitir que IIS netTcpBinding lo primero que tenemos que activar / activar WCF Non-HTTP Activation. Para hacer eso, ir al panel de control -> Programas y características -> Activar las características de Windows o desactivar y luego busque "Microsoft .NET Framework 3.5.1 '. Verá algo parecido a continuación:


Asegúrese de seleccionar las dos opciones. Esto permitirá que IIS pueda trabajar con los protocolos HTTP, HTTPS, net.tcp, net.pipe, net.msmq, msmq.formatname.

Paso 2:
Como esto desregistra el ASP.NET de la máquina, el siguiente paso es registrar de nuevo ASP.NET con IIS. Para ello, vaya al símbolo del sistema de Visual Studio y luego escriba 'aspnet_regiis -i'. Esto registra el ASP.NET con IIS y usted será capaz de alojar su aplicación web de nuevo.


Paso 3:
Debemos comprobar si los servicios Net.Pipe y Net.Tcp estan en ejecución. Estos tres servicios garantiza que IIS es capaz de escuchar a la petición TCP y también permitirá compartir puerto.Ir a Herramientas administrativas> Servicios y revise el siguiente servicio si se ejecuta, si no iniciarlos.


Paso 4:
A medida que la máquina está configurada para apoyar netTcp, el siguiente paso es configurar IIS para permitir a un sitio web para utilizar el puerto net.tcp por defecto que es 808. También puede cambiar cualquier otro puerto que desee. Asegúrese de que no configura net.tcp al puerto 80 porque está siendo utilizado por HTTP y no se puede tener dos protocolos que se ejecutan en el mismo puerto. Alternativa, o bien el cambio de puerto HTTP a otra cosa que no sea 80 (sólo si desea utilizar net.tcp en el puerto 80, pero no es un método recomendado).

Ahora para configurar IIS: Abrir IIS Configuration Manager, luego ir a "Sitio Web predeterminado" y haga clic derecho sobre él y luego ir a Edit bindings:




En el cuadro de texto 'información vinculante', es necesario especificar qué puerto que desea utilizar para la conexión netTCP. Como mencioné anteriormente, es 808 por defecto, pero se puede tener cualquier otro puerto también. El formato es 'puerto: IP address', así que entré en '808: *' y haga clic en Aceptar.

Ahora se debe habilitar el protocolo net.tcp para el Default Web Site, para ello se debe posicionar sobre el Default Web Site y luego seleccionar Advanced Settings



Ahora el sitio web está configurado para escuchar solicitud de conexión TCP en el puerto 808. Recuerde que si usted tiene página web múltiples donde necesita configuración TCP entonces usted tiene que hacer lo mismo para todos los sitios web.

Paso 5:
Lo siguiente es habilitar el protocolo net.tcp para su aplicación en el IIS. Para ello haga clic derecho en su aplicación en el IIS y luego haga clic en "Configuración avanzada" y busque la propiedad de los Protocolos habilitados 'y no entrar en' net.tcp '. Lista de protocolo habilitado es una lista separada por comas por lo que puede permitir que varios protocolos separándolas con una coma.



Ahora su sitio web está totalmente configurado para utilizar net.tcp vinculante. El siguiente paso es configurar el proyecto para tener servicio de WCF en el puerto TCP 808.

Paso 6:
Esta entrada continua en el supuesto que estamos utilizando un proyecto WCF Service Application tal como se muestra en la figura:


Luego dar clic derecho sobre el proyecto y luego ir a la pestaña 'Propiedades'. Usted debe tener algo como abajo. Seleccione la pestaña 'web' de los servidores de la izquierda y haga el cambio de IIS Express del Visual Development Studio Server a Local IIS Web Service servidor y luego se debe dar click sobre el botón Create Virtual Directory


La razón por la que hemos cambiado de servidor para ser local Servidor Web IIS en lugar de Visual Development Server estudio es que se puede configurar IIS Web Server para apoyar net.tcp pero no se puede configurar el mismo para Visual Studio Desarrollo Server. Esto se debe a que el Visual Studio Server sólo soporta HTTP.

Ahora el siguiente paso es configurar tu web.config del proyecto de apoyo a netTcpBinding para el Servicio WCF.

Paso 7:
Nuestro último paso es configurar web.config para utilizar netTcpBinding para el Servicio WCF, como podran darse cuenta desde el paso 5 estoy utilizando un proyecto de WCF Server Application con nombre WCFBorrar y el Solution Explorer para este proyecto queda de la siguiente manera


Tras la muestra del Solution Explorer del proyecto el Web.config del servicio WCF utilizando netTcpBinding queda así

     
    
  

    
    
      
        
        
          
            
          
        

        
        
        
          
            
          
        
      
    
    
     
      
        
          
          
        
      
    
    
    
      
        
      
    
  

    
    
    
  


En este Web.config hay algunos puntos a tener en cuenta:

- Atributo de la 'serviceMetadata' 'httpGetEnabled' debe establecerse en "falso". Esto permitirá descubrir WCF metadatos de servicio sobre protocolo no HTTP.

- Tenga en cuenta que estamos usando 'mexTcpBinding' para el punto final mex. También puede utilizar 'mexHttpBinding', pero luego tienes que configurar el atributo 'httpGetEnabled' a 'True' y usted debería ser capaz de localizar el uso de la dirección http Servicio WCF lugar de net.tcp.

- Es importante que especifique el baseAddress para su punto final. Esto ayudará a IIS para que encuentre su servicio WCF. A continuación, saber dónde buscar.

- es importante hacer notar que aunque en el atributo se especifique la direccion

        
          
        
      
al especificar la dirección del servidor al momento de agregar una service reference desde el cliente se debe utilizar esta direccion pero con /mex al final, es decir que la dirección en la cual el cliente creara una referencia al servicio WCF creado utilizando net.tcp y hospedado en IIS local es net.tcp://localhost:808/WCFBorrar/Service1.svc/mex