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


Related Posts:

  • WCF - Entity Framework - AutoMapper(2)Para realizar las operaciones CRUD se tomara como referencia el proyecto creado en la entrada anterior, pueden consultarlo en este enlace La interfaz ILunesService.cs se modificara de manera que muestre mas metodos al cliente… Read More
  • Configuración de un servicio WCFxml version="1.0" encoding="UTF-8"?> <configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="serviceBehavior"> … Read More
  • WCF - Entity Framework - AutoMapper(1)Automapper sirve para hacer mapeos entre objetos .NET, ahorrandonos gran cantidad de código y que provee algunas utilidades para personalizar cómo se realiza dicho mapeo entre objetos. Realizar mapeo entre objetos en una fun… Read More
  • WCF Service y Entity FrameworkEn este ejemplo se muestra como trabajar un servicio WCF y Entity Framework utilizando las entidades creadas por el ORM como DTO para "ser consumidas" pues supone el caso particular en que el cliente necesita y trabajara con … Read More
  • WCF Data Service y Entity framework También conocido como ADO.NET Data Services, es un componente del .NET Framework que permite crear servicios web usando ODATA (Open Data Protocol), para exponer y consumir datos en la web mediante REST, ODATA expone los dato… Read More