Estoy tratando de crear un relajante servicio web wcf. Cuando intento conectar con el servicio a través de el cliente me sale el siguiente error:

El servicio no se puede activar porque no admite ASP.NET la compatibilidad. ASP.NET la compatibilidad está habilitado para esta aplicación. Apague ASP.NET el modo de compatibilidad en la web.config o agregar el atributo AspNetCompatibilityRequirements para el tipo de servicio con RequirementsMode configuración como ‘Permitido’ o ‘Necesario’.

Otros han tenido problemas, pero fijo que a través de cambios en su web.config. He implementado su solución, pero todavía existe el problema. 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>
InformationsquelleAutor user1186651 | 2012-08-10

4 Comentarios

  1. 103

    De su principal servicio que usted podría marcar su servicio como:

    [AspNetCompatibilityRequirements(
            RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

    De http://forums.silverlight.net/t/21944.aspx

    • Gracias que trabajó. en caso que alguien más está utilizando vb.neta…la sintaxis es: <AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Required)> Lo que realmente necesito es un buen ejemplo de creación de descanso con wcf vb.net la sintaxis, pero todo lo que puedo encontrar es C# ejemplos, y yo gastar mi tiempo tratando de convertir a vb.net. Si alguien sabe de un buen código de ejemplo en vb.net por favor, hágamelo saber, o enviarme un link
    • hmmmm derecho. Son bienvenidos.
    • Pasé cerca de 12 horas tratando de perseguir «El servidor no proporcionar una respuesta significativa; esto puede ser causado por un contrato de desajuste, un prematuro de la sesión de cierre o un error interno del servidor» antes de encontrar esta respuesta, y se solucionó mi problema! =P Gracias!
    • Tengo esta cuando quiero cambiar mi sistema operativo de Win7 a Win8. Incluso depurar el proyecto no funciona. Algo en IIS8 hace esta configuración necesarios en los Servicios de WCF. Gracias Steve! 🙂
    • trabajó como un encanto..también no te olvides de Añadir Sistema.ServiceModel.La activación de espacio de nombres en el uso de la lista de
  2. 53

    va a trabajar :

    usted tiene que cambiar esto líneas de código o añadir la línea en la web.config:

    <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel>
    • sírvanse explicar más acerca de su respuesta si es posible..
    • ¿Por qué en la tierra es este votada abajo se acaba de resolver mi problema!
    • Esta solucionado mi problema, el cambio de aspNetCompatibilityEnabled="false"
    • Trabajó como un encanto!!!
    • Esta solucionar mi problema. Thx!!!
    • Esto funcionó para mí. El beneficio adicional de este método es que no requiere que usted vuelva a compilar el código fuente.
    • Me gustaría hacer un archivo de configuración de cambio de hacer un cambio en los archivos de código.
    • thanq para la solución funciona

  3. 1

    Si alguien tiene un montón de servicios y se crean servicios de uso personalizado de ServiceHostFactory, entonces AspNetCompatibilityRequirementsAttribute también se pueden establecer en CreateServiceHost método.

    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;
        }
    }
  4. 0

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

    1.Para su clase de servicio:

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

    2.Para la web.config

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

Dejar respuesta

Please enter your comment!
Please enter your name here