2012-02-27 11 views
8

Soy completamente nuevo en WCF y despliegue de servicios. Tengo problemas para configurar mi servicio en IIS 6.0.¿Cómo implementar mi servicio WCF en IIS 6.0?

Necesito los pasos exactos para implementar mi servicio WCF en IIS 6.0.

Nota: He creado una aplicación de servicio de WCF ...

Entonces, ¿qué es exactamente los pasos que debe seguir para implementar mi servicio WCF en IIS 6.0?

+2

Ver: http://www.youtube.com/watch?v=mX8quq7MoeI –

+2

O MSDN aquí: http://msdn.microsoft.com/en-us/library/ms733766.aspx –

Respuesta

11

Usted tiene básicamente dos opciones, creo:

Opción 1 - "bin" desplegar (opción preferida)

  1. compilar su servicio WCF en un (biblioteca de clases) DLL
  2. crear un sitio web en IIS6
  3. copiar las DLL de WCF en la carpeta .\bin del sitio web
  4. crear un *.svc archivo en ese sitio web
  5. añadir una adecuada web.config en la carpeta del sitio web a definir sus puntos finales y configuración de servicios, etc.

Su servicio WCF ahora será accesible en la dirección base de la página web, más el nombre de la *.svc archivo, por ejemplo

http://myserver/someweb/Myservice.svc 

Su *.svc sería algo como esto:

<%@ ServiceHost Language="C#" Debug="true" 
    Service="WCF_Simple_Service.HelloIndigoService" %> 

Los atributos Service= denota la clase que implementa el servicio - completo con su espacio de nombres.

Opción 2 - cosas poner en App_Code

  1. crear un sitio web en IIS6
  2. poner todo su WCF relacionados *.cs archivos directamente en la carpeta .\App_Code
  3. crear un archivo *.svc en ese sitio web
  4. agregue un web.config apropiado en la carpeta del sitio web para definir los puntos finales y la configuración del servicio, etc.

Su servicio WCF ahora será accesible en la dirección base del sitio web, más el nombre del archivo *.svc, p. Ej.

http://myserver/someweb/Myservice.svc 

Su *.svc sería algo como esto:

<%@ ServiceHost Language="C#" Debug="true" 
    Service="Service" 
    CodeBehind="~/App_Code/Service.cs" %> 

Un simple, muestra web.config podría ser algo como esto:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
      <behavior name="WithDebug"> 
       <serviceMetadata httpGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="true" /> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    <services> 
    <service name="SimpleWCF.HelloIndigoService" behaviorConfiguration="true"> 
     <endpoint 
      address="" 
      binding="basicHttpBinding" 
      contract="SimpleWCF.IHelloIndigoService" /> 
     <endpoint 
      address="mex" 
      binding="mexHttpBinding" 
      contract="IMetadataExchange" /> 
    </service> 
    </services> 
</system.serviceModel> 

Es, básicamente, definir su etiqueta <service> - y otra vez: el name= denota la clase que implementa el servicio, totalmente calificado con su espacio de nombres. Debe contener al menos un punto final, dado que IIS6 solo es compatible con HTTP, puede usar basicHttpBinding o wsHttpBinding y eso es todo lo que hay. Un punto final "mex" es opcional, pero muy útil, especialmente para desarrollo y pruebas. Le permite al cliente "descubrir" el servicio y obtener su descripción del servicio para que pueda interactuar con él.

Una vez que su servicio se implementa en IIS, puede verlo en acción utilizando una herramienta como la WCF Test Client que se incluye de forma gratuita con WCF, o SoapUI que es una utilidad de pruebas de SOAP de propósito general (con una edición gratuita para que usted pueda utilizar).

+0

¿Tengo que agregar algo en la etiqueta de dirección de mi primer punto final? – Willem

+2

@Willem: normalmente no: cuando se aloja en IIS, es el directorio virtual de IIS el que controla la dirección. Podrías agregar algo como 'MyService' a él - una dirección" relativa "- entonces tu servicio estaría en' http: // MyServer/VirtualDir/MyService.svc/MyService' - pero dado que el archivo '* .svc' está en de todos modos, esas direcciones se vuelven un poco torpes ... –

+1

Eso es increíble. Muchas gracias – Willem

Cuestiones relacionadas