IIS alojado Servicio WCF retorno HTTP 400 Bad Request

He estado buscando por horas, pero no pude encontrar la solución. Voy a explicar brevemente.

Estoy aprendiendo de Servicios WCF. Acabo de crear un servicio y navegar por ella. Aquí está el archivo de configuración:

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="EmployeeServiceBehaviour">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="EmployeeServiceBehaviour" name="EmployeeConfiguration">
        <endpoint address="http://localhost:2005/EmployeeService.svc" binding="basicHttpBinding"
          bindingConfiguration="" contract="IEmployeeConfiguration" />
      </service>
    </services>
  </system.serviceModel>
  <system.web>
    <compilation debug="true"/>
  </system.web>
  <system.webServer>
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

Cuando navegaba desde Visual Studio parece que no hay problema. Funciona perfectamente.

IIS alojado Servicio WCF retorno HTTP 400 Bad Request

IIS alojado Servicio WCF retorno HTTP 400 Bad Request

Segundo, estoy tratando de publicar en IIS. Lo que estoy haciendo es esto:

Puedo publicar el servicio a una carpeta y añadir este servicio a IIS.

IIS alojado Servicio WCF retorno HTTP 400 Bad Request

Yo seleccione el puerto 3006 como un puerto.

Por debajo de su archivo de configuración. Tenga en cuenta que también he cambiado el puerto dentro de config para 3006

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="EmployeeServiceBehaviour">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="EmployeeServiceBehaviour" name="EmployeeConfiguration">
        <endpoint address="http://localhost:3006/EmployeeService.svc" binding="basicHttpBinding"
          bindingConfiguration="" contract="IEmployeeConfiguration" />
      </service>
    </services>
  </system.serviceModel>
  <system.web>
    <compilation/>
  </system.web>
  <system.webServer>
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

Y estoy a la espera para que se ejecute sin problemas, pero:
IIS alojado Servicio WCF retorno HTTP 400 Bad Request

IIS alojado Servicio WCF retorno HTTP 400 Bad Request

IIS me da una página en blanco de Chrome

IIS alojado Servicio WCF retorno HTTP 400 Bad Request

Y HTTP 400 Solicitud incorrecta desde el Explorador de

IIS alojado Servicio WCF retorno HTTP 400 Bad Request

Por último, si puedo quitar de la dirección de la parte de archivo de configuración que todo funciona bien. Pero otros confundido cosa es que, en mi otro ordenador después de escenario anterior(dirección) puedo llegar a la de servicio. Así que, realmente cansado de buscar por qué esto está trabajando en un equipo y no a trabajar en otro. Podría alguien que me lo explique?

Sé que es un poco más de tiempo, pero tengo que explicarlo claramente.
Gracias

Yo tenía el mismo problema y lo resolvió. Fue hace mucho tiempo pero no puedo encontrar el documento, si nadie responde hasta luego 🙂
Gracias. Yo le agradezco a usted, Si usted proporciona para mí ahora. Porque no podía encontrar la respuesta a cualquier lugar y lo más probable es que se olvide de esta pregunta de pronto 🙂
No, yo no. No me quedo despierto para encontrar la solución 😉 2 en la mañana y tengo sueño
Ok. Dormir ahora 🙂 y estoy esperando saber de usted, si nadie responde
Merhaba! Creo que esto es algo más profundo que un simple servicio. Se puede añadir una simple página ASPX y publicarlo en este nuevo sitio web, a continuación, ver si usted puede navegar por esa página?

OriginalEl autor Omer K | 2014-07-20

4 Kommentare

  1. 6

    Según mis búsquedas no debería proporcionar una dirección.

    msdn.microsoft.com/en-us/library/aa751792(v=vs 110).aspx

    Se debe utilizar siempre relativa extremo de direcciones para alojado en IIS servicio
    los extremos. El suministro de un completo extremo de dirección (por ejemplo,
    localhost/MyService.svc) puede conducir a errores en la implementación de la
    el servicio si la dirección de extremo no apuntan al IIS-aplicación
    que aloja el servicio de exponer el extremo. Con relativa extremo
    las direcciones de los servicios alojados evita estos posibles conflictos.

    OriginalEl autor Omer K

  2. 1

    Creo que esto va a resolver su problema:

    Agregar este extremo a su servicio:

    <endpoint address="mex" binding="mexHttpBinding" 
        bindingConfiguration="" contract="IMetadataExchange" />

    Y cambiar el name atributo de la service a su clase de servicio nombre completo:

    <service behaviorConfiguration="EmployeeServiceBehaviour" 
        name="Namespace.EmployeeConfigurationClass">

    La esperanza de que es suficiente

    Gracias, voy a probarlo. Tengo dos equipos uno en el trabajo y otro en casa. Por favor, tenga en cuenta que, si puedo quitar de la dirección de la parte I puede navegar por tanto de ellos. Si me ofrecen dirección puedo navegar en un sólo equipo de trabajo, ordenador de casa da respuestas anteriores en mi pregunta. Así, sospecho que algo como la configuración de IIS.
    Vamos a arreglar esta noche 🙂
    Eso espero, gracias. Estoy en busca error HTTP 400 en IIs
    nada aún?
    No sé por qué esto funciona para mi un equipo y no en otros, pero creo que es mejor no proporcionar una dirección, así que funcionará para ambos equipos. Gracias por ayudar a Alireza

    OriginalEl autor Alireza

  3. 1

    Esto puede ser de ayuda. he pasado más de 2 horas tratando de conseguir este trabajo. yo uso FF y su conjunto como el navegador predeterminado.

    en FF fue la adición de una /en el final de mi URL

    http://services.tester.dev/VehicleFeedService.svc/

    que devuelve un NetworkError: 400 Bad Request

    sin embargo, en IE o chrome, no poner el /en el final y funciona bien.

    una cosa a tener en cuenta.. incluso en FF que me estaba dando un 400 solicitud incorrecta, el ?wdsl hizo el trabajo

    http://services.tester.dev/VehicleFeedService.svc?wsdl

    parece que la /causa el problema

    OriginalEl autor JGilmartin

  4. 0

    Usted puede tratar de fiddler y también tratar el svcTracer que puede dar mucha información de depuración en la parte superior de la misma también puede utilizar includeExceptionDetailInFaults=true bandera en el servidor, pero es importante indicador de que no siempre el derecho a enviar esta información al cliente, especialmente si el cliente es una entidad externa. Con esta advertencia es la siguiente sugerencia de cómo usarlo.

    <serviceBehaviors>
        <behavior name="ServiceBehavior">
        ....
            <serviceDebug includeExceptionDetailInFaults="true" />
        ....
        </behavior>
    </serviceBehaviors>

    Feliz de depuración 🙂

    OriginalEl autor Mubashar Ahmad

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea