2015-08-25 4 views
0

Я пытаюсь выполнить какой-то контроль исключения в своей службе (возвращая простые целые числа и обрабатывая их в графическом интерфейсе), но я наткнулся на трудность ,Служба WCF - возвращает int из «Method =« DELETE »

Во всех моих POST и PUT я вернусь либо 1 или -1 (в зависимости от того, за исключением я получаю), но я не могу показаться, чтобы возвращать целое число от моего DELETE метода.

Это мой подход:

IService.cs

[OperationContract] 
[WebInvoke(Method = "DELETE", UriTemplate = "/logins/delete/{stringId}")] 
int DeleteLogin(string stringId); 

Service.cs

/// <summary> 
/// Deletes the Login with the given stringId 
/// </summary> 
/// <param name="stringId"></param> 
public int DeleteLogin(string stringId) 
{ 
    try 
    { 
     var id = Int32.Parse(stringId); 
     var dbLogin = DAO.HourRegInstance.Login.SingleOrDefault(x => x.ID == id); 
     DAO.HourRegInstance.Login.Remove(dbLogin); 
     DAO.HourRegInstance.SaveChanges(); 
     return 1; 
    } catch(Exception e){ 
     return -1; 
    } 
} 

Не теряйте время, объясняя мне, чтобы поймать конкретные исключения. Это просто тестовая среда

Ajax вызова

function deleteUser() { 
    $.ajax({ 
     type: "DELETE", 
     url: baseAddress + "logins/delete/" + user.Id, 
    }).done(function (code) { 
     if (code === 1) { 
      DevExpress.ui.notify('Your account has been deleted!', 'success', 3000); 
      HourRegistrationApplication.app.navigate({ 
       view: "Login" 
      }) 
     } else if (code === -1) { 
      DevExpress.ui.notify('Something went wrong, please try again.', 'error', 3000); 
      HourRegistrationApplication.app.navigate({ 
       view: "LoginProfile" 
      }) 
     } 
    }).error(function (err) { 
     console.log(err); 

     DevExpress.ui.notify('Something went wrong, please try again.', 'error', 3000); 
     HourRegistrationApplication.app.navigate({ 
      view: "LoginProfile" 
     }) 
    }) 
} 

Это то, что я получаю вернулся:

enter image description here

Есть ли способ для меня, чтобы возвращать целое число от моего метода DELETE? Или это просто невозможно?

+1

Пожалуйста, включите больше информации, чем просто «это не Работа". Я не вижу там WCF. В чем проблема с возвратом int с использованием WCF? Вы получаете ошибки? – nvoigt

+0

@nvoigt Отредактировано. У меня нет ошибок. переменный «код» - это просто то, что я не совсем понимаю (см. основной вопрос) – Detilium

ответ

0

Это возможно. Я просто попробовал это сам, и все работает нормально. Попробуйте использовать параметр BodyStyle на вашем WebInvokeAttribute. И установите его на WebMessageBodyStyle.Bare, это разворачивает весь ваш контент и заставляет сервер возвращать только необработанные данные.

+0

Нет разницы. Еще не возвращая целое число – Detilium

+0

, попробуйте установить свойство dataType для вашего запроса ajax на обычный текст и посмотреть, что вы там получите. Должно быть что-то вроде '..DeleteLoginResult', не так ли? И, кстати, результат вашего «code» объекта выглядит как html-документ. –

1

Мне удалось решить мою проблему самостоятельно.

В аннотации данных, я просто заменил это:

[WebInvoke(Method = "DELETE", UriTemplate = "/logins/delete/{stringId}")] 

С этим:

[WebInvoke(Method = "DELETE", ResponseFormat = WebMessageFormat.Json, UriTemplate = "/logins/delete/{stringId}")] 

В основном только добавил ResponseFormat = WebMessageFormat.Json

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

  • Нет связанных вопросов^_^