クライアント側で C# 例外をキャッチしようとしています。現在、ログインしているユーザーが削除リンクを取得するセクションがあり、クリックすると、削除する前にユーザーがまだログインしていることを確認します。もうログインしていない場合、コードは例外をスローします。
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod]
public static void DeleteComment(Guid commentId)
{
try
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
UserEntity currentUser = ((UserEntity)Membership.GetUser());
.. do work
}
else
{
throw new HttpException(401, "401");
}
}
catch (Exception)
{
throw;
}
}
このエラーは JavaScript コードに送られ、次にチェックされます。
if (result.responseJSON.Message == "401") {
これはローカル環境では正常に機能し、Message フィールドには 401 が含まれ、responseJSON.ExceptionType には「System.Web.HttpException」が含まれますが、ステージング環境で試行すると、代わりに 500 エラー コードが返され、ExceptionType は「」になります。
リモート掘り下げを試してみましたが、ログインしていないときに例外が発生し、スローされますが、クライアント側のコードにヒットすると、常に 500 になります。