tutorial servicio example create crear con asp.net wcf rest

asp.net - servicio - wcf service c# example



Error del servicio web WCF: el servicio no se puede activar porque no es compatible con la compatibilidad con ASP.NET (4)

Estoy tratando de crear un servicio web rest wcf. Cuando trato de conectarme al servicio a través del cliente, aparece el siguiente error:

El servicio no se puede activar porque no es compatible con la compatibilidad ASP.NET. La compatibilidad ASP.NET está habilitada para esta aplicación. Desactive el modo de compatibilidad ASP.NET en web.config o agregue el atributo AspNetCompatibilityRequirements al tipo de servicio con la configuración RequirementsMode como ''Allowed'' o ''Required''.

Otros han tenido problemas, pero lo arreglaron mediante cambios en su web.config. Implementé su solución, pero aún así el problema existe. aquí está mi web.config:

<system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="WebBehavior" > <webHttp /> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior name="MyServiceBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior> <behavior name=""> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="MyServiceBehavior" name="myfirstwcf"> <endpoint address="ws" binding="basicHttpBinding" contract="Imyfirstwcf" /> <endpoint address="ws2" binding="wsHttpBinding" contract="Imyfirstwcf" /> <endpoint address="" behaviorConfiguration="WebBehavior" binding="webHttpBinding" contract="Imyfirstwcf" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> <serviceHostingEnvironment aspNetCompatibilityEnabled= "true" multipleSiteBindingsEnabled="true" /> </system.serviceModel>


De hecho, según la última documentación, debes hacer 2 cosas,

1. Para su clase de servicio:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [ServiceBehavior(Namespace = "url")] public class Service : IService { }

2. Para web.config

<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>



Si alguien tiene una gran cantidad de servicios y servicios creados con ServiceHostFactory personalizado, entonces AspNetCompatibilityRequirementsAttribute también se puede establecer en el método CreateServiceHost .

Ejemplo:

public class HostFactory : ServiceHostFactory { protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) { var host = new ServiceHost(serviceType, baseAddresses); //other relevent code to configure host''s end point etc if (host.Description.Behaviors.Contains(typeof(AspNetCompatibilityRequirementsAttribute))) { var compatibilityRequirementsAttribute = host.Description.Behaviors[typeof(AspNetCompatibilityRequirementsAttribute)] as AspNetCompatibilityRequirementsAttribute; compatibilityRequirementsAttribute.RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed; } else { host.Description.Behaviors.Add(new AspNetCompatibilityRequirementsAttribute() { RequirementsMode =AspNetCompatibilityRequirementsMode.Allowed}); } return host; } }


funcionará :

ha cambiado estas líneas en el código o agrega la línea en web.config:

<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" /> </system.serviceModel>