Estoy siguiendo los principios de la siguiente publicación de blog y obtengo el comportamiento que espero cuando depuro mi Servicio WCF utilizando el servidor web integrado de Visual Studio 2010.¿Por qué IIS 7 no devuelve fallas JSON? Funciona en * mi * máquina
http://zamd.net/2008/07/08/error-handling-with-webhttpbinding-for-ajaxjson/
Cuando mi solicitud lanza una FaultException(), que se puede ver la representación JSON de ese fallo en mi máquina local. La aplicación también devuelve el HttpStatusCode apropiado (en este caso, 401 no autorizada), que es el comportamiento deseado.
{"Code":"UserNotLoggedInFault","DisplayText":"You must be logged in to access this resource.","InternalText":"User is not logged in"}
Cuando despliego mi solicitud a IIS 7.0, sin embargo, tengo la HttpStatusCode correcta, pero el HTML devuelto es el texto genérico que se asocia con el código de estado:
Usted no tiene permiso para ver este directorio o página.
Como esto funciona localmente, supongo que el problema es una configuración de IIS. Ya he eliminado los valores de IIS: Páginas de error que interceptaban estados de error (solía devolver el HTML formateado de% SystemDrive% \ inetpub \ custerr \\ 401.htm)
¿Alguien sabe qué configuración de IIS necesito cambiar? permitir que pase la respuesta JSON cuando se devuelve un estado HTTP fuera del rango 200? ... o tal vez hay algo más que necesito hacer?
ACTUALIZACIÓN # 1
Esto sólo parece estar sucediendo cuando mi solicitud lanza una FaultException que también establece el HttpStatusCode a no autorizado (401). Si mi aplicación devuelve un código de estado de 404 No encontrado, entonces el JSON se devuelve correctamente.
La pregunta sigue en pie, pero supongo que solo se aplica a la devolución de un código de estado 401 no autorizado.
Estas son algunas capturas de pantalla de la respuesta como se recoge en Web Proxy Charles
Esto es lo que parece cuando llegué a mi máquina local
ACTUALIZACIÓN # 2
Así que esto no ocurre si el escritorio remoto en el servidor y golpear el sitio a través de localhost. Cuando presiono mi URL que requiere autenticación, obtengo el objeto JSON adecuado devuelto.
hace ese medio que IIS trata a 401 código de estado de forma diferente y que los usuarios no autenticados están protegidos de la respuesta correcta?
¿Cuál es su alojamiento local - IIS o IIS Express? ¿Eres capaz de convertirte en respuestas de otros sitios en el servidor? – Regfor
Localmente, ejecuto WebDev.WebServer40.exe. En mi servidor IIS 7 de Windows Server 2008, puedo POSTAR y OBTENER objetos JSON y todo funciona bien, excepto cuando arrojo una excepción de error. Cuando lo tiro localmente, obtengo la estructura JSON. Cuando lo arrojo a mi caja de Windows Server/IIS, aparece el mensaje "No tiene permiso para ver este directorio o página". respuesta. – JackAce
Y qué ocurre con otras aplicaciones web o servicios del servidor. ¿Eres capaz de realizar llamadas HTTP exitosas a otra cosa desde el servidor? – Regfor