gpt4 book ai didi

ServiceStack.Razor CustomHttpHandler 不显示 HttpStatusCode.BadRequest

转载 作者:行者123 更新时间:2023-12-02 03:53:11 25 4
gpt4 key购买 nike

我正在尝试使用 ServiceStack.Razor 运行一个最小的应用程序,但我在运行 CustomHttpHandler 时遇到了问题。我已按照说明进行操作 herehere ,但它无法正常工作。

我正在使用以下代码为 HttpStatusCode.BadRequest 注册自定义 http 处理程序:

public override void Configure(Container container)
{
this.Plugins.Add(new RazorFormat());
this.SetConfig(new EndpointHostConfig
{
CustomHttpHandlers =
{
{ HttpStatusCode.NotFound, new RazorHandler("/notfound") },
{ HttpStatusCode.BadRequest, new RazorHandler("/error") }
},
DebugMode = true
});
}

问题是,/notfound 处理程序非常适合 404,但无论我做什么,我都无法让 /error razor 文件在任何时候显示抛出 ArgumentNullException

我的服务方法是这样的:

public object Any(Hello request)
{
if (string.IsNullOrEmpty(request.Name))
{
throw new ArgumentNullException("Name");
}

return new HelloResponse { Result = "Hello " + request.Name };
}

ServiceStack 返回 400 状态,这很好,但它仍然显示我对 HelloResponse 的 View :

400-bad-request

我错过了什么?我是否误解了 CustomHttpHandlers 应该如何工作?

为了引用,我把项目up on github .

最佳答案

是的,CustomHttpHandlers 只是用来处理未处理的系统生成的错误。目前它们仅限于:

  • NotFound (404) 未处理的请求
  • 禁止访问 (403)当请求被禁止的文件或资源时

这些错误发生在 ServiceStack 之外,因此无法由 existing ServiceStack's event hooks or user-defined custom logic 处理,因此我们允许用户通过 CustomHttpHandlers 修改这种情况下的行为。

Error Handling wiki描述了如何处理 ServiceStack 中的错误。

尽管在处理异常后允许回退以允许通过将其呈现到用户指定的页面来进一步处理它可能是有意义的(因为它是选择加入的),您希望在此处执行此操作。

我们将考虑在未来尝试探索类似的东西。随时将这些 future 的功能请求添加到 ServiceStack's issue list所以我们不会忘记。

关于ServiceStack.Razor CustomHttpHandler 不显示 HttpStatusCode.BadRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13693908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com