2016-04-18 16 views
1

角度の.then()のリジェクト部分に到達する方法を理解しようとしています。角度の約束で取り込まれたエラーを作成する方法

C#方法

public int Foo(){ 
int foo = 1; 
return foo; 
} 

Iしかしもその応答がキャッチと.then()約束の最初の部分で処理され、404500とスローHttpResponseException試みました。私はそれが後者の部分に入るためにどのような種類のエラーが発生する必要があるのか​​理解したい。

私は応答例外をスローするソースとしてこれを使用している

Throw HttpResponseException or return Request.CreateErrorResponse?

例の角度方法

foo.then(function(response){ 
    //success do something 
}), function(error){ 
    // how to come here? 
}) 

私はよく、私は単純だ、私に知らせてください説明していない場合機能の一部であるrejectに到達した後

+1

ハリーハリーは、404または500の応答が成功したコールとみなされます。あなたは尋ねたので、あなたは情報を受け取りました。エラー・フェーズは、httpコールが成功しなかった場合にトリガーされます。 E.a.タイムアウトコールで非常に短いタイムアウトを設定するか、間違ったパスまたはサーバーを呼び出すだけでテストできます。 – stevenvanc

+0

HTTPレスポンスインターセプタはありますか? – dotctor

+0

@stevencaオハイオ州私はそれが感謝の意を参照してください – Haris

答えて

0

C#メソッドからintを返す代わりに、IHttpActionResultを返す必要があります。

[HttpGet] 
public IHttpActionResult Foo() 
{ 
    try 
    { 
     int foo = 1; 
     return Ok(foo); 
    } 
    catch(Exception exception) 
    { 
     // log exception or whatever you need to do 
     return InternalServerError(exception); 
    } 
} 
+0

こんにちは、ありがとうございますが、これは依然として.then() – Haris

+0

の成功の部分で捕まえられません。成功したコールバックを引き起こす 'Ok()'レスポンスがありますが、 'InternalServerError()'レスポンスがエラーコールバックを引き起こします。 – Lex

0

あなたはあなたの括弧の1つを台無しにしていると思います。約束のためのエラーハンドラは、 ".then"メソッドの中に含める必要があります。

この置き換え:

foo.then(function(response){ 
    //success do something 
}, function(error){ 
    // how to come here? 
}); 

に役立ちます希望を

foo.then(function(response){ 
    //success do something 
}), function(error){ 
    // how to come here? 
}) 

を。

+0

こんにちは、ありがとう、しかし、コードは、デモの目的のためであり、これは私の質問に答えることはありません。 – Haris

関連する問題