servicestack,C#,Asp.net,Http,servicestack" /> servicestack,C#,Asp.net,Http,servicestack" />

C# 服务堆栈在筛选器中终止HTTP请求

C# 服务堆栈在筛选器中终止HTTP请求,c#,asp.net,http,servicestack,C#,Asp.net,Http,servicestack,是否有一种方法可以在过滤器内部终止HTTPRequest。I以下代码: this.RequestFilters.Add((req, res, requestDto) => { var access_token = req.Headers.GetValues("token"); if(access_token == null || String.IsNullOrEmpty(access_token[0])) { //Ki

是否有一种方法可以在过滤器内部终止HTTPRequest。I以下代码:

this.RequestFilters.Add((req, res, requestDto) =>
{                
    var access_token = req.Headers.GetValues("token");
    if(access_token == null || String.IsNullOrEmpty(access_token[0]))
    {
        //Kill Request here, ensuring it does not hit the service and returns an unauthorized       error code
    }
使用
EndRequest()
结束请求并使请求管道短路,例如:

this.RequestFilters.Add((req, res, requestDto) =>
{                
    var access_token = req.Headers.GetValues("token");
    if (access_token == null || String.IsNullOrEmpty(access_token[0]))
        res.EndRequest()
}
使用
EndRequest()
结束请求并使请求管道短路,例如:

this.RequestFilters.Add((req, res, requestDto) =>
{                
    var access_token = req.Headers.GetValues("token");
    if (access_token == null || String.IsNullOrEmpty(access_token[0]))
        res.EndRequest()
}

@rosdi是正确的答案是:

this.RequestFilters.Add((req, res, requestDto) =>
{                
    var access_token = req.Headers.GetValues("token");
    if(access_token == null || String.IsNullOrEmpty(access_token[0]))
    {
        throw new UnauthorizedAccessException();
    }

@rosdi是正确的答案是:

this.RequestFilters.Add((req, res, requestDto) =>
{                
    var access_token = req.Headers.GetValues("token");
    if(access_token == null || String.IsNullOrEmpty(access_token[0]))
    {
        throw new UnauthorizedAccessException();
    }

抛出异常不会阻止请求吗?哇,这比我想象的要简单。抛出异常不会阻止请求吗?哇,这比我想象的要简单。如果你要抛出异常,那么不需要设置状态代码,由于
503禁止
状态代码将在
UnauthorizedAccessException
的响应中自动设置。编辑以引用common@mythzi如果要引发异常,则无需设置状态代码,作为
503禁止
状态代码将自动设置在
UnauthorizedAccessException
的响应上。编辑以引用common@mythz