IExceptionHandlerの実装がエラー応答を返さないのはなぜですか?

複数のMonad

ASP.NETとF#を使用してWebAPIを構築しています。IExceptionHandlerの実装があります。

type DefaultExceptionHandler() =

let mapExceptionTypetoHttpStatusCode (ex:Exception) : HttpStatusCode =
    match ex with
    | :? ArgumentException -> HttpStatusCode.BadRequest
    | _ -> HttpStatusCode.InternalServerError

interface IExceptionHandler with
    member x.HandleAsync (context:ExceptionHandlerContext, cancellationToken:CancellationToken) =
        let request = context.Request
        let ex = context.Exception
        let httpStatusCode = mapExceptionTypetoHttpStatusCode ex

        context.Result <- { new IHttpActionResult with member x.ExecuteAsync(token:CancellationToken) = Task.FromResult(request.CreateErrorResponse(httpStatusCode, ex)) }
        Task.FromResult(0) :> Task

起動時に登録されます。

type Global() =
inherit System.Web.HttpApplication() 

static member RegisterWebApi(config: HttpConfiguration) =
    // Configure routing
    config.MapHttpAttributeRoutes()
    config.Routes.MapHttpRoute(
        "DefaultApi", // Route name
        "api/{controller}/{id}", // URL with parameters
        { controller = "{controller}"; id = RouteParameter.Optional } // Parameter defaults
    ) |> ignore


    config.Services.Replace(typeof<IExceptionHandler>, new DefaultExceptionHandler())

member x.Application_Start() =
    GlobalConfiguration.Configure(Action<_> Global.RegisterWebApi)

デバッグしてコードがトラバースされていることを確認できますが、返される応答はハンドラーに設定された応答ではありません。私が見落としているのは単純なことであり、コンパイラエラーを引き起こしていないことは確かですが、これまでのところ問題を確認することはできませんでした。context.Result正しく設定していませんか?

うまくいけば、F#の達人の1人がすぐに私のエラーを見るでしょう。ここまでお読みいただき、ありがとうございました。

複数のMonad

さて、*問題*は(恥ずかしいほど)単純であることが判明しました。学習メカニズムとしてF#Web APIテンプレートを使用しているときに他の人が同様の問題に遭遇した場合に備えて、ここに投稿します。

これは、テンプレートの誤解から生じました。現在存在するテンプレートはindex.html、プロジェクトルートにあるファイルを使用して、慣例により応答を配信します。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Car List App</title>
    <link href="./Content/bootstrap.min.css" rel="stylesheet">
    <link href="./Content/Site.css" rel="stylesheet">
</head>
<body>
<div class="container">
    <h2 class="sub-header">All Cars</h2>
    <table id="cars" class="table">
        <thead>
            <tr>
                <td>#</td>
                <td>Make</td>
                <td>Model</td>
            </tr>
        </thead>
        <tbody />
    </table>
</div>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
<script src="./Scripts/main.js"></script>

内部から呼び出されるJavaScriptの中にindex.htmlは、コントローラーへの呼び出しを実際に実行したものがあります。

$(function () {
    var uri = 'api/cars';

    $.getJSON(uri)
        .done(function (data) {
            $.each(data, function (key, item) {
                $('<tr><td>' + (key + 1) + '</td><td>' + item.make + '</td><td>' + item.model + '</td></tr>')
                    .appendTo($('#cars tbody'));
            });
        });
});

JSは上記のプロパティを持つオブジェクトを予期しているため、エラー応答を受信すると、それを無視して空のindex.htmlページを表示しました

ルーキー、間違い。うまくいけば、これは誰かの命を数分節約するでしょう。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

コードが無応答エラーを返すのはなぜですか?私はsymfony2を初めて使用し、symfonyブックで説明されているブログの例を実装しようとしています。

分類Dev

Axiosのインスタンスがキャッチエラーで応答を返さないのはなぜですか?

分類Dev

SurveyMonkey APIの取得リクエストで403エラー応答が返されるのはなぜですか?

分類Dev

GoogleフォームがformSubmitでユーザーの応答を返さないのはなぜですか?

分類Dev

grpcからnil以外の応答とエラーが返されるのはなぜですか

分類Dev

MSXML2.ServerXMLHTTP応答が完全なhtmlソースを返さないのはなぜですか?

分類Dev

MSXML2.ServerXMLHTTP応答が完全なhtmlソースを返さないのはなぜですか?

分類Dev

KafkaKSQLでDESCRIBEEXTENDEDがエラーShowColumnsを返さないのはなぜですか?

分類Dev

NSURLConnectionが401の応答ではなくエラーを返す

分類Dev

応答を受信した後にコードが実行されないのはなぜですか

分類Dev

execute()がエラー時にtrueを返さないのはなぜですか?

分類Dev

cURLが正しい応答を返すのに、scrapyが応答しないのはなぜですか?

分類Dev

この単純なPHPが応答を返さないのはなぜですか?

分類Dev

IISが空の応答を返すのはなぜですか?

分類Dev

Postmanが縮小されていないJSON応答を返すのはなぜですか?

分類Dev

Razor、ASP.NET、C#HTTPRequestsが応答の本文を返さないのはなぜですか?

分類Dev

オンラインでエラーが検出されないのに、Discordコマンドが応答しないのはなぜですか?

分類Dev

標準出力が応答ではなくエラーログに記録されるのはなぜですか?

分類Dev

-1を返すときにg ++がエラーを返さないのはなぜですか

分類Dev

@GetMappingメソッドが応答の送信中に要求パラメータを返すのはなぜですか?

分類Dev

このコードがflag.IntVarでエラーを返さないのはなぜですか?

分類Dev

サーバーの応答を変換できず、エラーが発生するのはなぜですか?

分類Dev

なぜこれがエラーを返さないのですか?

分類Dev

すべてが正しく実行されてもPOSTがエラーを返すのはなぜですか?

分類Dev

このFirebaseFunction Promiseが正しいエラーを返さないのはなぜですか?

分類Dev

ApiaryコンソールがこのAPIブループリントに対して正しい応答を返さないのはなぜですか?

分類Dev

インデックスをメッシュ/面に実装すると、OpenGlエラーが返されるのはなぜですか?

分類Dev

「ドライブ」にpingを実行すると、127.0.53.53から応答が返されるのはなぜですか。

分類Dev

次の解析コードがエラーを返さないのはなぜですか?

Related 関連記事

  1. 1

    コードが無応答エラーを返すのはなぜですか?私はsymfony2を初めて使用し、symfonyブックで説明されているブログの例を実装しようとしています。

  2. 2

    Axiosのインスタンスがキャッチエラーで応答を返さないのはなぜですか?

  3. 3

    SurveyMonkey APIの取得リクエストで403エラー応答が返されるのはなぜですか?

  4. 4

    GoogleフォームがformSubmitでユーザーの応答を返さないのはなぜですか?

  5. 5

    grpcからnil以外の応答とエラーが返されるのはなぜですか

  6. 6

    MSXML2.ServerXMLHTTP応答が完全なhtmlソースを返さないのはなぜですか?

  7. 7

    MSXML2.ServerXMLHTTP応答が完全なhtmlソースを返さないのはなぜですか?

  8. 8

    KafkaKSQLでDESCRIBEEXTENDEDがエラーShowColumnsを返さないのはなぜですか?

  9. 9

    NSURLConnectionが401の応答ではなくエラーを返す

  10. 10

    応答を受信した後にコードが実行されないのはなぜですか

  11. 11

    execute()がエラー時にtrueを返さないのはなぜですか?

  12. 12

    cURLが正しい応答を返すのに、scrapyが応答しないのはなぜですか?

  13. 13

    この単純なPHPが応答を返さないのはなぜですか?

  14. 14

    IISが空の応答を返すのはなぜですか?

  15. 15

    Postmanが縮小されていないJSON応答を返すのはなぜですか?

  16. 16

    Razor、ASP.NET、C#HTTPRequestsが応答の本文を返さないのはなぜですか?

  17. 17

    オンラインでエラーが検出されないのに、Discordコマンドが応答しないのはなぜですか?

  18. 18

    標準出力が応答ではなくエラーログに記録されるのはなぜですか?

  19. 19

    -1を返すときにg ++がエラーを返さないのはなぜですか

  20. 20

    @GetMappingメソッドが応答の送信中に要求パラメータを返すのはなぜですか?

  21. 21

    このコードがflag.IntVarでエラーを返さないのはなぜですか?

  22. 22

    サーバーの応答を変換できず、エラーが発生するのはなぜですか?

  23. 23

    なぜこれがエラーを返さないのですか?

  24. 24

    すべてが正しく実行されてもPOSTがエラーを返すのはなぜですか?

  25. 25

    このFirebaseFunction Promiseが正しいエラーを返さないのはなぜですか?

  26. 26

    ApiaryコンソールがこのAPIブループリントに対して正しい応答を返さないのはなぜですか?

  27. 27

    インデックスをメッシュ/面に実装すると、OpenGlエラーが返されるのはなぜですか?

  28. 28

    「ドライブ」にpingを実行すると、127.0.53.53から応答が返されるのはなぜですか。

  29. 29

    次の解析コードがエラーを返さないのはなぜですか?

ホットタグ

アーカイブ