2009-12-28 16 views

Respuesta

0

Dependiendo del momento en que tiene que hacer la verificación de autorización, que podría hacerlo en un HttpModule usar algo como lo siguiente:

HttpContext context = HttpContext.Current; 
context.Response.StatusCode = 401; 
context.Response.End(); 
+0

No es exactamente cierto ... puedes hacer esto con CUALQUIERA de los xHttpBindings. – WayneC

5

Si está programando un servicio REST se puede hacer de esta manera:

private IWebOperationContext context = new WebOperationContextWrapper(WebOperationContext.Current); // Get the context 

context.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized; // Set the 401 
1

Si está utilizando la fábrica WebServiceHost2 desde el Starter Kit WCF REST, también puede lanzar específica WebProtocolException y especificar un código de retorno HTTP:

alt text http://www.robbagby.com/wp-content/uploads/effective-error-handling-with-wcf-rest/image_thumb_5.png alt text http://www.robbagby.com/wp-content/uploads/effective-error-handling-with-wcf-rest/image_thumb_10.png alt text http://www.robbagby.com/wp-content/uploads/effective-error-handling-with-wcf-rest/image_thumb_12.png

También hay un HttpStatusCode.Unauthorized que se corresponde con el código de estado 401.

Consulte la excelente publicación de blog de Rob Bagby Effective Error Handling with WCF REST para obtener más detalles sobre las diversas formas de especificar los códigos de retorno HTTP. (Capturas de pantalla son de entrada en el blog de Rob - que se merece todo el crédito por esto.)

2
throw new WebFaultException(System.Net.HttpStatusCode.Unauthorized); 

Notas: "MSDN: Cuando se utiliza un criterio de valoración WCF REST (WebHttpBinding y WebHttpBehavior o WebScriptEnablingBehavior) el código de estado HTTP en la respuesta se establece en consecuencia. Sin embargo, WebFaultException se puede usar con puntos finales que no sean REST y se comporta como una FaultException regular. "

Cuestiones relacionadas