3

ServiceStack.Razor を使用して最小限のアプリを動作させようとしていますが、CustomHttpHandler を動作させるのに問題があります。こちらこちらの指示に従いましたが、正しく動作しません。

次のコードを使用して、のカスタム http ハンドラーを登録していますHttpStatusCode.BadRequest

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

400不正な要求

私は何が欠けていますか?CustomHttpHandlers がどのように機能するかを誤解していますか?

参考までに、プロジェクトを github にアップしました

4

1 に答える 1

1

ええ、CustomHttpHandlers は、未処理のシステム生成エラーを処理するためのものです。現在、それらは次のように制限されています:

  • 未処理のリクエストのNotFound (404)
  • Forbidden (403)禁止されたファイルまたはリソースに対して要求が行われた場合

これらは ServiceStack の外部で発生するエラーであり、既存の ServiceStack のイベント フックまたはユーザー定義のカスタム ロジックでは処理できないため、ユーザーは を介し​​てこの場合の動作を変更できますCustomHttpHandlers

エラー処理 wikiでは、ServiceStack でエラーを処理する方法について説明しています。

例外が処理された後にフォールバックを許可して、ユーザー指定のページにレンダリングすることでさらに処理できるようにすることは (オプトインであるため) 理にかなっているかもしれませんが、ここで行うことを期待しています。

今後はこのようなことを模索していきたいと考えています。このような今後の機能リクエストをServiceStack の問題リストに自由に追加して、忘れないようにしてください。

于 2012-12-04T00:46:12.290 に答える