Tengo un servicio web WCF estoy tryiong para publicar en IIS. Puedo ver el wsdl bien, pero no se puede agregar el servicio en Visual Studio 2010 a través de la Agregar Referencia de Servicio de menú. Me sale el siguiente error:

Metadata contains a reference that cannot be resolved: 'http://localhost:4567/Service.svc?wsdl'.
The WSDL document contains links that could not be resolved.
There was an error downloading 'http://localhost:4567/Service.svc?xsd=xsd0'.
The underlying connection was closed: An unexpected error occurred on a receive.
Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.
An existing connection was forcibly closed by the remote host
Metadata contains a reference that cannot be resolved: 'http://localhost:4567/Service.svc'.
Content Type application/soap+xml; charset=utf-8 was not supported by service http://localhost:4567/Service.svc.  The client and service bindings may be mismatched.
The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'..
If the service is defined in the current solution, try building the solution and adding the service reference again.

Me funciona muy bien a nivel local, pero no se si se publica en IIS.

¿Alguien sabe cuál es la causa de este problema? Aquí está mi web.config, soy nuevo WCF, así que podría haber perdido algo, gracias:

<?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
  <connectionStrings>

  </connectionStrings>
</configuration>

OriginalEl autor Funky | 2013-07-24

8 Comentarios

  1. 7

    Me verdaderamente deseo de Microsoft de poner un mejor diagnóstico en lugar de darnos información más específica sobre la configuración de WCF errores, ya sea en la compilación o en tiempo de ejecución, no me importa cual, pero se ha perdido de tantas horas de tiempo de desarrollo a través de los años es irreal.

    </rant>

    Para mí, este ridículamente error genérico de la causa fue este:

    <endpoint address="mexTcp" binding="mexTcpBinding" contract="IMetadataExchange"/>

    Debe haber sido esta:

    <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>

    Dos horas de pedo se levantaría alrededor tratando de habilitar la Red.Tcp por algo que fácilmente podría haber sido destacado en el IDE. Dos horas!!!

    Yo upvoted debido a que usted usó la frase fart-arsing.
    a mí también, hee hee 🙂
    A sólo dos horas?

    OriginalEl autor Moby’s Stunt Double

  2. 3

    Ya que este es uno de los primeros puestos de google muestra este error, quiero participar con mi solución:

    Tengo un error similar, mientras que el cambio de código en un sistema que estaba funcionando bien, pero la actualización de la referencia en mi sistema de desarrollo de error. La referencia se encuentra dentro de un proyecto de silverlight y está relacionado con una WCF integrado en el entorno web (configuración estándar supongo).

    Mi mensaje de error incluido

    «WCF Metadatos contiene una referencia que no puede ser resuelto: ‘Algunos
    divertida ruta de acceso’. El tipo de contenido text/html; charset=utf-8 de la respuesta
    mensaje no coincide con el tipo de contenido del enlace
    (application/soap+xml; charset=utf-8).»

    Mi sitio web utiliza roles de autorización, que es donde el problema/solución se basa. Para actualizar el servicio de referencia tenía que permitir que todos los usuarios:

    <?xml version="1.0"?>
    <configuration>
        <system.web>
            <!--<authorization>
                <allow users="*"/>            
            </authorization>-->
            <authorization>
                <deny users="?"/>
                <allow roles="role-1,role-2"/>
                <deny users="*"/>
            </authorization>
        </system.web>
    </configuration>

    OriginalEl autor Ulfert

  3. 2

    Comprobar la respuesta aquí Foro MSDN

    Cuando se define una red del protocolo tcp usted necesita para asegurarse de que está utilizando IMetadataExchange contrato definido en un extremo de contrato. El comportamiento en servicio para esto también debe contener la <serviceMetadata /> etiqueta. Por lo que he entendido, esto es bastante repetitivo código para su configuración si son ganas de host y generar proxys /descubrir en el VS.

    <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
    desde tu originalmente terrible la calidad de la respuesta, esto se ha editado en una razonable respuesta. Enlace sólo respuestas son mal vistas por la StackOverflow de la comunidad y por lo que siempre debe esforzarse para dar respuestas con información adicional tomado de la página vinculada, como ahora se muestra más arriba. Para obtener más información sobre cómo mejorar sus respuestas, por favor consulte el ¿Cómo puedo escribir una buena respuesta? página del Centro de Ayuda.

    OriginalEl autor sundog

  4. 0

    Recibido básicamente el mismo mensaje de error al intentar actualizar el servicio de referencia de uno de nuestros servidores de prueba. Texto exacto (eliminado IPs, etc):

    There was an error downloading 'http://xxx.xxx.xxx.xxx/xxxxxxxWSNew/Service.svc/_vti_bin/ListData.svc/$metadata'.
    
    The request failed with HTTP status 400: Bad Request.
    
    Metadata contains a reference that cannot be resolved: 'http://xxx.xxx.xxx.xxx/xxxxxxxWSNew/Service.svc'.
    
    Content Type application/soap+xml; charset=utf-8 was not supported by service http://xxx.xxx.xxx.xxx/xxxxxxxWSNew/Service.svc.  The client and service bindings may be mismatched.
    
    The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'..

    Esto no me parece correcto para mí, así que he usado Fiddler para ver lo real, las respuestas fueron llegando de nuevo desde el servidor cuando VS estaba tratando de generar una representación de los metadatos. Resulta que los metadatos se apunta VS el nombre de host que el servidor se identifica como-por ejemplo wwww.server.com. Añade la correspondiente entrada en el archivo hosts y el proxy generado correctamente.

    OriginalEl autor Joshua Evensen

  5. 0

    Tuve este problema cuando uno de mis DataMember objetos tenían un constructor. No estoy segura si era de los parámetros para el constructor o algo dentro de ella. Pero yo era capaz de resolver por hacer el constructor estático de un método que devuelve un nuevo tipo que antes era la construcción de.

    OriginalEl autor SixOThree

  6. 0

    Puedo ver el wsdl bien, pero no se puede agregar el servicio en Visual Studio 2010 a través de la Agregar Referencia de Servicio de menú

    Trate de usar la herramienta WSDL, abra un Símbolo del sistema de Visual Studio:

    wsdl.exe /out:c:\temp\WebService.cs /order www.webadress.com?wsdl

    OriginalEl autor Jeremy Thompson

  7. 0

    Añadir a la lista de cosas que causa el Error 415, en mi caso se me olvidó añadir [DataContract] y [DataMember] atributo a una clase que fue utilizado por el servicio.

    OriginalEl autor Maciej Szpakowski

  8. 0

    En mi caso fue una falta constructor vacío a una de las clases que el servicio volvió. después de agregar que el error fue eliminado.

        public ClassName() {}

    OriginalEl autor user1418586

Dejar respuesta

Please enter your comment!
Please enter your name here