C# 服务堆栈在筛选器中终止HTTP请求
是否有一种方法可以在过滤器内部终止HTTPRequest。I以下代码: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
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