2009-12-28 1 views

ответ

0

В зависимости от того, когда вам нужно сделать проверку авторизации, вы можете сделать это в HttpModule используя что-то вроде следующего:

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

Не совсем верно ... вы можете сделать это с ЛЮБОЙ из xHttpBindings. – WayneC

5

Если вы программируете REST-сервис это можно сделать так:

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

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

Если вы используете WebServiceHost2 завод из WCF REST Starter Kit, вы можете также бросить конкретный WebProtocolException и указать код 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

Там также HttpStatusCode.Unauthorized который соответствует коду 401 статуса.

Дополнительную информацию о различных способах указания кодов возврата HTTP см. В превосходном сообщении блога Роба Бэбби Effective Error Handling with WCF REST. (Скриншоты из блоге Роба - он заслуживает кредит на это.)

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

Примечания: «MSDN: При использовании конечной точки WCF REST (WebHttpBinding и WebHttpBehavior или WebScriptEnablingBehavior) в HTTP-код состояния на ответ поэтому WebFaultException может использоваться с конечными точками без REST и ведет себя как обычное исключение FaultException. "

 Смежные вопросы

  • Нет связанных вопросов^_^