如何从 WCF 服务返回 HTTP 401?
问问题
9813 次
4 回答
6
throw new WebFaultException(System.Net.HttpStatusCode.Unauthorized);
笔记:
MSDN:使用 WCF REST 端点(WebHttpBinding 和 WebHttpBehavior 或 WebScriptEnablingBehavior)时,响应上的 HTTP 状态代码会相应设置。但是,WebFaultException 可以与非 REST 端点一起使用,并且其行为类似于常规的 FaultException。
于 2011-12-08T00:40:11.553 回答
6
如果您正在编写 REST 服务,则可以通过以下方式完成:
private IWebOperationContext context = new WebOperationContextWrapper(WebOperationContext.Current); // Get the context
context.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized; // Set the 401
于 2009-12-28T08:16:06.473 回答
1
如果您使用 WCF REST Starter Kit 中的 WebServiceHost2 工厂,您还可以抛出特定WebProtocolException
的并指定 HTTP 返回代码:
(来源:robbagby.com)
(来源:robbagby.com)
(来源:robbagby.com)
还有一个HttpStatusCode.Unauthorized
对应于 401 状态码。
有关指定 HTTP 返回码的各种方法的更多详细信息,请参阅 Rob Bagby 的优秀博客文章使用 WCF REST 进行有效错误处理。(截图来自 Rob 的博文——他应该为此获得所有功劳。)
于 2009-12-28T08:41:36.560 回答
0
根据您需要进行授权检查的时间,您可以HttpModule
使用如下方式进行检查:
HttpContext context = HttpContext.Current;
context.Response.StatusCode = 401;
context.Response.End();
于 2009-12-28T07:16:32.927 回答