如何在自定义HTTP模块中抛出错误代码?

时间:2015-08-09 06:10:56

标签: c# wcf

我正在自定义HTTP模块中编写授权功能。这是我的代码:

        private bool CheckAuthorization(HttpContext context)
        {
            string auth = context.Request.Headers["Authorization"];            
            if (string.IsNullOrEmpty(auth) || auth != "123")
            {                    
                context.Response.StatusCode = -404;//HttpStatusCode.MethodNotAllowed;                
                context.Response.Write("404 Not allowed!");
                //webOperationContext.OutgoingResponse.StatusCode = HttpStatusCode.MethodNotAllowed;                
            }
            return true;
        }

我的开发环境是: C#+ .NET Framwork 4.0 + Visual Studio 2013 + WCF 。我的目的是:当检查授权失败时,请求不应该调用WCF方法,并返回< strong> 404方法不允许错误。现在仍然通过返回错误提示调用WCF方法。谢谢!

1 个答案:

答案 0 :(得分:5)

您可以抛出一个无法处理的HttpException,并向浏览器提供必要的错误。

throw new HttpException(404, "HTTP/1.1 404 Unauthorized");

抛出异常将导致请求终止,并且您的WCF方法不应该运行。但是,如果你有一个try catch包装CheckAuthorization调用,那么重新抛出HttpException很重要。为了使它能够工作,你无法处理异常,让ASP.Net管道处理它。