ServiceStack razor——从带有默认视图的服务重定向会导致异常
本文关键字:重定向 服务 异常 视图 razor 默认 ServiceStack | 更新日期: 2023-09-27 17:51:04
我正在尝试项目级安全性。我有如下服务:
[DefaultView("Customer")]
public class CustomerService : MyServiceBase
{
public object Get(CustomerRequest request)
{
if (UserIsAuthorizedForCustomer(request.Id))
{
return new CustomerResponse { Customer = GetCustomer(request.Id) };
}
else
{
return this.Redirect("/AccessDenied.htm");
}
}
}
我遇到的问题是,当认证检查失败并且服务返回重定向响应时,看起来剃刀页面仍在执行,但是null Model导致NullReferenceException。我做错了什么吗?
谢谢!
我不确定您的Redirect
的实现是什么,但重定向到错误页面的正常方法是抛出一个异常,该异常遵循AppHost中的重定向规则设置。例句:
if (!UserIsAuthorizedForCustomer(request.Id))
throw new UnauthorizedException("Not Authorized");
在AppHost中,您可以为不同的错误代码指定不同的重定向页面,例如:
SetConfig(new EndpointHostConfig {
CustomHttpHandlers = {
{ HttpStatusCode.NotFound, new RazorHandler("/notfound") },
{ HttpStatusCode.Unauthorized, new RazorHandler("/login") },
}
});
或者如果你只想要一个页面,你可以为未处理的错误指定一个回退:
SetConfig(new EndpointHostConfig {
GlobalHtmlErrorHttpHandler = new RazorHandler("/error")
});