Error
El siguiente error surge con un esquema expuesto como un servicio en un receive location tipo WCF-Custom que usa binding Net.tcp y que se hospeda in-process a BizTalk Server. La descripción del servicio (wsdl) esta expuesta vía http por medio de Internet Information Services.
Este error se presenta al momento de dar browse al servicio.
WebHost failed to process a request.
Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/62476613
Exception: System.ServiceModel.ServiceActivationException: The service ‘/Test/TestSchema/TestSchemaService.svc’ cannot be activated due to an exception during compilation. The exception message is: Root element is missing.. —> System.Xml.XmlException: Root element is missing.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlReader.MoveToContent()
at System.Xml.XmlReader.ReadStartElement(String name)
at Microsoft.BizTalk.Adapter.Wcf.Metadata.ReceiveLocationProxy.ExtractProperties(String customCfg)
at Microsoft.BizTalk.Adapter.Wcf.Metadata.ReceiveLocationProxy.CreateRLConfig()
at Microsoft.BizTalk.Adapter.Wcf.Metadata.MexServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses)
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity)
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
— End of inner exception stack trace —
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath, EventTraceActivity eventTraceActivity)
Process Name: w3wp
Alternativa de Solución
La solución no esta muy relacionada con el error arrojado por BizTalk Server ya que se trata de un problema de permisos de usuario.
El usuario usado en el application pool que hospeda el servicio (generalmente se usa un usuario que pertenezca al grupo de BizTalk Isolated Host User) para poder ver su wsdl debe pertenecer a los siguientes grupos de BizTalk Server:
- SSO Administrators
- SSO Affiliate Administrators
- BizTalk Isolated Host Users
- BizTalk Administrators (esto porque posiblemente se requiere para los procesos net.tcp ya que el servicio esta hospedado en BizTalk y no en IIS)
Por último reiniciar el servidor.
Espero les funcione!