Compartilhar via


Implantando um Serviço WCF hospedado do Internet Information Services dos Serviços de Informações da Internet

Desenvolver e implantar um serviço WCF (Windows Communication Foundation) hospedado no IIS (Serviços de Informações da Internet) consiste nas seguintes tarefas:

  • Verifique se o IIS, o ASP.NET, o WCF e o componente de ativação do WCF estão instalados e registrados corretamente.

  • Crie um novo aplicativo IIS ou reutilize um aplicativo ASP.NET existente.

  • Crie um arquivo .svc para o serviço WCF.

  • Implante a implementação do serviço no aplicativo IIS.

  • Configure o serviço WCF.

Para obter um passo a passo detalhado da criação de um serviço WCF hospedado pelo IIS, consulte Como hospedar um serviço WCF no IIS.

Verifique se o IIS, o ASP.NET e o WCF estão instalados e registrados corretamente

WCF, IIS e ASP.NET devem ser instalados para que os serviços WCF hospedados pelo IIS funcionem corretamente. Os procedimentos para instalar o WCF (como parte do .NET Framework), ASP.NET e IIS variam dependendo do sistema operacional. Para obter mais informações sobre como instalar o WCF e o .NET Framework, consulte Instalar o .NET Framework para desenvolvedores. Para instalar o IIS no Windows 10, abra Programas e Recursos no Painel de Controle e selecione Ativar ou Desativar recursos do Windows. Em Recursos do Windows, selecione Serviços de Informações da Internet e escolha OK.

Recursos do Windows com o IIS destacado

As instruções para instalar o IIS em outros sistemas operacionais podem ser encontradas na instalação do IIS no Windows Vista e no Windows 7 e na instalação do IIS 8.5 no Windows Server 2012 R2.

O processo de instalação do .NET Framework registra automaticamente o WCF com o IIS se o IIS já estiver presente no computador. Se o IIS estiver instalado após o .NET Framework, será necessária uma etapa adicional para registrar o WCF no IIS e ASP.NET. Você pode fazer isso da seguinte maneira, dependendo do sistema operacional:

Criar um novo aplicativo do IIS ou reutilizar um aplicativo de ASP.NET existente

Os serviços WCF hospedados pelo IIS devem residir dentro de um aplicativo do IIS. Você pode criar um novo aplicativo IIS para hospedar exclusivamente os serviços do WCF. Como alternativa, você pode implantar um serviço WCF em um aplicativo existente que já está hospedando conteúdo ASP.NET 2.0 (como páginas .aspx e serviços Web ASP.NET [ASMX]). Para obter mais informações sobre essas opções, consulte as seções "Hospedagem do WCF lado a lado com ASP.NET" e "Hospedagem de serviços WCF no modo de compatibilidade ASP.NET" nos Serviços WCF e ASP.NET.

Observe que o IIS 6.0 e versões posteriores reiniciam periodicamente um aplicativo de programação isolado orientado a objetos. O valor padrão é 1740 minutos. O valor máximo com suporte é de 71.582 minutos. Essa reinicialização pode ser desabilitada. Para obter mais informações sobre essa propriedade, consulte PeriodicRestartTime.

Criar um arquivo .svc para o serviço WCF

Os serviços do WCF hospedados no IIS são representados como arquivos de conteúdo especiais (arquivos.svc) dentro do aplicativo IIS. Esse modelo é semelhante à maneira como as páginas ASMX são representadas dentro de um aplicativo IIS como arquivos .asmx. Um arquivo .svc contém uma diretiva de processamento específica do WCF (@ServiceHost) que permite que a infraestrutura de hospedagem do WCF ative os serviços hospedados em resposta a mensagens de entrada. A sintaxe mais comum para um arquivo .svc está na instrução a seguir.

<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>

Ele consiste na diretiva @ServiceHost e em um único atributo. Service O valor do Service atributo é o nome do tipo CLR (Common Language Runtime) da implementação do serviço. Usar essa diretiva é basicamente equivalente à criação de um host de serviço usando o código a seguir.

new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );

Configuração de hospedagem adicional, como a criação de uma lista de endereços base para o serviço, também pode ser feita. Você também pode usar um ServiceHostFactory personalizado para estender a diretiva para uso com soluções de hospedagem sob medida. Os aplicativos IIS que hospedam serviços WCF não são responsáveis por gerenciar a criação e o tempo de vida das ServiceHost instâncias. A infraestrutura de hospedagem WCF gerenciada cria a instância necessária ServiceHost dinamicamente quando a primeira solicitação é recebida para o arquivo .svc. A instância não é liberada até que seja fechada explicitamente por código ou quando o aplicativo é reciclado.

Para obter mais informações sobre a sintaxe dos arquivos .svc, consulte @ServiceHost.

Implantar a implementação de serviço no aplicativo IIS

Os serviços do WCF hospedados no IIS usam o mesmo modelo de compilação dinâmica que ASP.NET 2.0. Assim como acontece com ASP.NET, você pode implantar o código de implementação para serviços WCF hospedados pelo IIS de várias maneiras em vários locais, da seguinte maneira:

  • Como um arquivo de .dll pré-compilado localizado no GAC (cache de assembly global) ou no diretório \bin do aplicativo. Os binários pré-compilados não são atualizados até que uma nova versão da biblioteca de classes seja implantada.

  • Como arquivos de origem não compilados localizados no diretório \App_Code do aplicativo. Os arquivos de origem localizados neste diretório são exigidos dinamicamente ao processar a primeira solicitação do aplicativo. As alterações nos arquivos no diretório \App_Code fazem com que todo o aplicativo seja reciclado e recompilado quando a próxima solicitação for recebida.

  • Como código não compilado colocado diretamente no arquivo .svc. O código de implementação também pode ser localizado embutido no arquivo .svc do serviço, após a diretiva @ServiceHost. Qualquer alteração no código embutido faz com que o aplicativo seja reciclado e recompilado quando a próxima solicitação for recebida.

Para obter mais informações sobre o modelo de compilação do ASP.NET 2.0, consulte ASP.NET Visão geral da compilação.

Configurar o serviço WCF

Os serviços WCF hospedados pelo IIS armazenam sua configuração no arquivo de Web.config de aplicativos. Os serviços hospedados pelo IIS usam os mesmos elementos de configuração e sintaxe que os serviços do WCF hospedados fora do IIS. No entanto, as seguintes restrições são exclusivas para o ambiente de hospedagem do IIS:

  • Endereços base para serviços hospedados pelo IIS.

  • Os aplicativos que hospedam serviços do WCF fora do IIS podem controlar o endereço base dos serviços hospedados passando um conjunto de URIs de endereço base para o ServiceHost construtor ou fornecendo um <elemento host> na configuração do serviço. Os serviços hospedados no IIS não têm a capacidade de controlar seu endereço base; o endereço base de um serviço hospedado pelo IIS é o endereço de seu arquivo .svc.

Endereços de ponto de extremidade para serviços hospedados no IIS

Quando hospedado no IIS, o endereço do endpoint é sempre considerado relativo ao endereço do arquivo .svc que representa o serviço. Por exemplo, se o endereço básico de um serviço WCF for http://localhost/Application1/MyService.svc com a seguinte configuração de ponto de extremidade:

<endpoint address="anotherEndpoint" />

Isso fornecerá um ponto de extremidade que pode ser alcançado em http://localhost/Application1/MyService.svc/anotherEndpoint.

Da mesma forma, o elemento de configuração do ponto de extremidade que usa uma cadeia de caracteres vazia como endereço relativo fornece um ponto de extremidade acessível em http://localhost/Application1/MyService.svc, que é o endereço base.

<endpoint address="" />

Você sempre deve usar endereços de ponto de extremidade relativos para pontos de extremidade de serviço hospedados no IIS. Fornecer um endereço de ponto de extremidade totalmente qualificado (por exemplo, http://localhost/MyService.svc) pode levar a erros na implantação do serviço se o endereço do ponto de extremidade não apontar para o aplicativo IIS que hospeda o serviço expondo o ponto de extremidade. O uso de endereços de ponto de extremidade relativos para serviços hospedados evita esses possíveis conflitos.

Transportes disponíveis

Os serviços do WCF hospedados no IIS 5.1 e no IIS 6.0 estão restritos ao uso de comunicação baseada em HTTP. Nessas plataformas IIS, configurar um serviço hospedado para usar uma associação não HTTP resulta em um erro durante a ativação do serviço. Para o IIS 7.0, os transportes com suporte incluem HTTP, Net.TCP, Net.Pipe, Net.MSMQ e msmq.formatname, garantindo compatibilidade retroativa com aplicativos MSMQ já existentes.

Segurança de transporte HTTP

Os serviços WCF hospedados pelo IIS podem usar a segurança de transporte HTTP (por exemplo, esquemas de autenticação HTTPS e HTTP, como Basic, Digest e Autenticação Integrada do Windows), desde que o diretório virtual do IIS que contém o serviço dê suporte a essas configurações. As configurações de segurança de transporte de HTTP em uma associação do ponto de extremidade hospedado devem corresponder às configurações de segurança de transporte no diretório virtual do IIS que as contêm.

Por exemplo, um ponto de extremidade do WCF configurado para usar a autenticação resumida do HTTP deve residir em um diretório virtual do IIS que também seja configurado para permitir a autenticação resumida do HTTP. Combinações incompatíveis de configurações do IIS e configurações de ponto de extremidade WCF resultam em um erro durante a ativação do serviço.

Consulte também