2014-12-24 1 views
0

У меня есть следующие строки кода в моем контроллере после того, как пользователь вошел в его/ее журнал в деталяхмодель передается в Web API является нулевым

var userProfile = UserService.UserLogin(userLogin); 

Который называет это статический класс, который ссылается при вызове внешних веб Apis

public static UserProfile UserLogin(UserLogin userLogin) 
    { 
     var client = new RestClient(Url); 
     var request = new RestRequest("api/UserLoginApi/", Method.GET) { RequestFormat = DataFormat.Json }; 
     request.AddBody(userLogin); 

     var response = client.Execute(request); 

     var userProfile = JsonConvert.DeserializeObjectAsync<UserProfile>(response.Content).Result; 

     return userProfile; 
    } 

Вышеуказанные вызовы этого Web Api без проблем, я могу ударить точка останова установить

public UserProfile Get([FromBody] UserLogin userLogin) 
{ 
     UserProfile userProfile; 

    return userProfile; 
} 

Но когда я проверяю значения внутри userLogin внутри Web Api, они равны нулю?

Теперь шагая через контроллер, Userlogin имеет адрес электронной почты и пароль ввели, отправляясь в UserService.Login снова значения по-прежнему существует, когда он попадает в

var response = client.Execute(request); 

Я расширить запрос и увидеть параметры имеет счет 1, но когда он попадает в точку разрыва в моем Web Api GET, userLogin имеет значение null?

Я также попытался это в UserService.Login

 request.AddBody(new UserLogin 
     { 
      EmailAddress = userLogin.EmailAddress, 
      Password = userLogin.Password 
     }); 

Но опять-таки не повезло, что я здесь делаю неправильно?

+0

Это работает для меня '' 'request.AddObject (userLogin);' '' –

ответ

0

Я бы предположил, что при использовании FromBody вам необходимо использовать метод Post для отправки данных.

var request = new RestRequest("api/UserLoginApi/", Method.POST) { RequestFormat = DataFormat.Json }; 

Согласно вашему методу в вопросе.

public UserProfile Get([FromBody] UserLogin userLogin) 
{ 
UserProfile userProfile;  
return userProfile; 
} 

Ваши действия контроллера Получить метод и когда вы запрашиваете с Url API/UserLoginApi/и Получ он будет вызывать выше метод, и если вы изменить пост по моему предложению, вы должны изменить контроллер имя метода, а также если вы не хотите этого делать, а затем обновите действие контроллера таким образом.

public UserProfile Get([FromUri] UserLogin userLogin) 
    { 
     UserProfile userProfile;  
     return userProfile; 
    } 

Звоните со следующей вещью.

public static UserProfile UserLogin(UserLogin userLogin) 
    { 
     var client = new RestClient(Url); 
     var request = new RestRequest("api/UserLoginApi/", Method.GET) { RequestFormat = DataFormat.Json }; 
     request.AddQueryParameter("EmailAddress", userLogin.EmailAddress); 
     request.AddQueryParameter("Password", userLogin.Password);  
     var response = client.Execute(request);  
     var userProfile = JsonConvert.DeserializeObjectAsync<UserProfile>response.Content).Result;  
     return userProfile; 
    } 

, если вы решили использовать метод Post затем сделать действие контроллера, как

public UserProfile Post([FromBody] UserLogin userLogin) 
{ 
UserProfile userProfile;  
return userProfile; 
} 

И вы должны назвать как это.

public static UserProfile UserLogin(UserLogin userLogin) 
    { 
     var client = new RestClient(Url); 
     var request = new RestRequest("api/UserLoginApi/", Method.POST) { RequestFormat = DataFormat.Json }; 
     request.AddBody(userLogin); 

     var response = client.Execute(request); 

     var userProfile = JsonConvert.DeserializeObjectAsync<UserProfile>(response.Content).Result; 

     return userProfile; 
    } 

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

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