2013-11-12 4 views
2

Я пытаюсь получить исключение 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.

+1

Возможно, вы могли бы просто вернуть ошибку в код статуса ответа, [как в этом сообщении] (http://stackoverflow.com/questions/5649852/asp-net- веб-сервис-я-бы, как к возвратным ошибок 403-запрещено). – MikeSmithDev

+0

Вот обсуждение этой проблемы, а также некоторые идеи для обходных путей: http://stackoverflow.com/questions/5612970/throwing-an-httpexception-always-sends-back-http-500-error – mikey

+0

Я пробовал @MikeSmithDev ссылка, и это сработало, но не знаю, почему то, что у меня было, не будет работать за пределами наших локальных машин, но независимо от того, какой метод использовался в этой ссылке, работал на обеих машинах. – Paritosh

ответ

1

Вместо того, чтобы возвращать ответ возврата void с StatusCode HttpResponseMessage. Если вы хотите получить более подробную информацию, я могу написать ее :)

Смежные вопросы