2017-06-14 2 views
1

J'appelle Asp.net WebAPI à partir du code C# via RestSharp en utilisant ci-dessous le codeL'appel de asp.net webApi via restclient renvoie l'exception «Référence à une entité non déclarée 'nbsp», ligne 69, position 41. »

RestClient Client = new RestClient(); 

       Client.BaseUrl = new Uri("http://localhost:27156"); 
       var request = new RestRequest("api/GetUserName", Method.POST); 
       UserDto user = new UserDto { Ldap = "rahkuma"}; 
       request.AddHeader("Accept", "application/json"); 
       request.RequestFormat = DataFormat.Json; 

       //request.AddJsonBody(user); 
       request.AddBody(user); 
       var response = Client.Execute<UserDto>(request); 

Le service jetant StatusCode: NotFound et ErrorException "Référence à l'entité non déclarée 'nbsp' La ligne 69, la position 41." Je suis capable de le consommer depuis AngularJs mais depuis C# (WebForm) en utilisant restclient, il lance une exception. Toute aide à ce sujet serait grandement appréciée. Le code API Web Controller est inférieure

[HttpPost] 
    public ResponseModel<UserDto> GetUserName(UserDto user) 
    { 
     string Role = "Read"; 


     ResponseModel<UserDto> response = null; 
     try 
     { 
      var res = _accountLogic.GetUserName(new UserDto { Ldap = Utilities.Decrypt(user.Ldap) }); 

      if (res != null) 
      { 
       res.Ldap = user.Ldap; 
       var roleDetail = _accountLogic.GetUserRoles(res.EmpLdap); 
       if (roleDetail != null) 
       { 
        res.Role = roleDetail.Role; 
        res.LockEdit = roleDetail.LockEdit; 
        res.ManagementAdjPlug = roleDetail.ManagementAdjPlug; 
       } 

       response = new ResponseModel<UserDto>(); 
       response.Data = res; 
       response.ResponseStatus = Common.Enums.ResponseStatus.Sucess; 
      } 

     } 
     catch (Exception ex) 
     { 

      response = new ResponseModel<UserDto>(); 
      response.ResponseStatus = Common.Enums.ResponseStatus.Error; 
      response.ErrorMessage = ex.Message; 
      throw ex; 
     } 


     return response; 
    } 

Je joins aussi l'image de détail d'exception ci-dessousweb Api exception detail image

+0

Pouvez-vous montrer le code du contrôleur que vous frappiez? –

+0

Salut Daniel j'ai ajouté le code du contrôleur. Cela fonctionne très bien quand je le consomme avec angularjs mais avec C# ça ne marche pas –

+0

1. Quelle est la ligne 69 dans le code que vous avez montré? 2. Pouvez-vous montrer le code AngularJS qui fonctionne correctement? –

Répondre

1

La raison était absente Nom du contrôleur de la requête Api Url

Quand je fais changer de var request = new RestRequest("api/GetUserName", Method.POST);

Pour ce var request = new RestRequest("api/Account/GetUserName", Method.POST);

il fonctionne très bien. Le code complet est ci-dessous

Client.BaseUrl = new Uri("http://localhost:27156"); 
      var request = new RestRequest("api/Account/GetUserName", Method.POST); 
      UserDto user = new UserDto { Ldap = "rahkuma"}; 
      request.AddHeader("Accept", "application/json"); 
      request.RequestFormat = DataFormat.Json; 

      //request.AddJsonBody(user); 
      request.AddBody(user); 
      var response = Client.Execute<UserDto>(request); 

Ce fut une erreur stupide de ma part et grâce à tous ceux qui ont soutenu et m'a aidé

0

Pourriez-vous essayer ces modifications à votre demande et voir si elle aide:

RestClient Client = new RestClient("http://localhost:27156"); 
var request = new RestRequest("api/GetUserName", Method.POST); 
UserDto user = new UserDto { Ldap = "rahkuma"}; 
request.Method = Method.POST; 
request.AddHeader("Accept", "application/json"); 
request.RequestFormat = DataFormat.Json; 
request.Method = Method.POST; 

//request.AddJsonBody(user); 
//request.AddBody(user); 
request.AddParameter("application/json", user, ParameterType.RequestBody); 
var response = Client.Execute<UserDto>(request); 

Modifié:

//request.AddJsonBody(user); 
request.AddBody(user); //same as your original 
//request.AddParameter("application/json", user, ParameterType.RequestBody); 
var response = Client.Execute(request); //modified 

Et de mettre un point d'arrêt après cela, ou afficher la réponse, pour voir ce qui est exactement retourné.

+0

J'ai essayé votre demande mais toujours la même exception. –

+0

Hmm, pourriez-vous essayer avec les modifications? –

+0

L'erreur était de mon côté et il manquait le nom du contrôleur de l'URL –