4

私は R&D を行う時間があり、今日から OWIN をいじっています。

すべてのデータ インタラクションに対して OWIN WebAPI サービスを実行し、Angular を利用する別の Web フロント エンド SPA プロジェクトを使用したいと考えています。

すべてのコードは、さまざまなランダムなブログ投稿から恥知らずに盗まれたものであり、この「新しい技術」を理解するためだけのものです。

起動

  public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
#if DEBUG
            app.UseErrorPage();
#endif

            app.UseWelcomePage("/");
            // Configure Web API for self-host. 
            HttpConfiguration config = new HttpConfiguration();
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            app.UseWebApi(config);  

            app.Run(context =>
            {
                if (context.Request.Path.ToString() == "/fail")
                {
                    throw new Exception("Random exception");
                }

                context.Response.ContentType = "text/plain";
                return context.Response.WriteAsync("App Init");
            });
        }
    }

アカウントコントローラー

public class AccountsController : ApiController
{   
    // GET api/<controller>/5
    public string Get(int id)
    {
        throw new Exception("Random exception");
    }
}

[http://localhost:85/fail]に移動すると 、非常に魅力的なエラー ページが表示されます。

しかし、[http://l0calhost:85/api/accounts/5]を押すと、エラーが json/xml として公開されます。

  1. APIコントローラーの例外にAppBuilderエラーメカニズムも使用させる方法はありますか?
  2. これは眉をひそめますか?(なんか汚い感じ…)
4

1 に答える 1

5

現在 (バージョン 5.0) Web API には、内部で発生した例外を強制的にパイプラインの下流に伝播させる方法がありません。お気づきのとおり、現在、json/xml コンテンツを含む HTTP 応答メッセージに例外を変換しています。ただし、今後のリリースでは、エラー処理メカニズムをプラグインできるグローバル エラー処理機能の一部としてこの機能を提供する予定です。

Web API エラーのエラー ページを表示する IMO はあまり役に立ちません。クライアントがこれらの呼び出しを行う Javascript である場合、この html はどのように表示されますか? また、現在、ブラウザーには優れたデバッグ サポートがあり、呼び出しを追跡して、応答から問題を把握できます。

于 2013-11-04T15:18:22.267 に答える