Я пытаюсь получить исключение C#, пойманное на стороне клиента, в настоящее время у нас есть раздел, где зарегистрированный пользователь получает ссылку на удаление, если щелкнуть, мы делаем чек, чтобы убедиться, что пользователь все еще зарегистрирован перед удалением. если он не вошел в систему больше, код и исключение.catching 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;
}
}
эта ошибка идет в яваскрипте кода, который затем проверяется:
if (result.responseJSON.Message == "401") {
это прекрасно работает в нашей местной среде, поле Сообщения содержит 401 и result.responseJSON.ExceptionType содержит «System .Web.HttpException ", но при попытке в нашей промежуточной среде мы получаем вместо этого код ошибки 500, а ExceptionType -" "
Я пробовал удаленную проверку, и я вижу исключение, возникающее, когда оно не вошло в систему, оно выбрано, но когда он попадает на код клиента i t всегда 500.
Возможно, вы могли бы просто вернуть ошибку в код статуса ответа, [как в этом сообщении] (http://stackoverflow.com/questions/5649852/asp-net- веб-сервис-я-бы, как к возвратным ошибок 403-запрещено). – MikeSmithDev
Вот обсуждение этой проблемы, а также некоторые идеи для обходных путей: http://stackoverflow.com/questions/5612970/throwing-an-httpexception-always-sends-back-http-500-error – mikey
Я пробовал @MikeSmithDev ссылка, и это сработало, но не знаю, почему то, что у меня было, не будет работать за пределами наших локальных машин, но независимо от того, какой метод использовался в этой ссылке, работал на обеих машинах. – Paritosh