WCF Service no IIS


Ao criar um projeto do tipo WCF Service no Visual Studio .NET e, quando finalizar, efetuar o deployment no IIS 6.0, atente-se para o nome do diretório virtual quando você opta por marcar a aplicação como sendo “atualizável”, mais precisamente, quando você desmarca a opção “Allow this precompiled site to be updatable” da janela “Publish Web Site”.

Ao desmarcá-la e o serviço colocado em um diretório virtual com o nome diferente do nome da aplicação, a seguinte exceção será lançada:

Exception: System.ServiceModel.ServiceActivationException: The service ‘/WCF/Service.svc’ cannot be activated due to an exception during compilation.  The exception message is: Value cannot be null.
Parameter name: key. —> System.ArgumentNullException: Value cannot be null.
Parameter name: key
   at System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
   at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
   at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
   at System.ServiceModel.Activation.MetabaseSettingsIis.GetTransportSettings(String virtualPath)
   at System.ServiceModel.Activation.MetabaseSettingsIis.GetAccessSslFlags(String virtualPath)
   at System.ServiceModel.Activation.HttpHostedTransportConfiguration.GetBaseAddresses(String virtualPath)
   at System.ServiceModel.Activation.HostedTransportConfigurationManager.InternalGetBaseAddresses(String virtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)

Ao desmarcar esta opção, permitindo que o site seja “atualizável”, então não teremos problemas. Tudo isso se deve ao fato de que quando efetuamos a pré-compilação, o .NET embuti o nome da aplicação como sendo o nome do diretório virtual, o que muitas vezes difere em ambiente de produção. Maiores detalhes são explicados por Tom Fuller neste post.

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s