通过 restclient 调用 asp.net webApi 抛出异常 "Reference to undeclared entity 'nbsp'. Line 69, position 41."

Calling asp.net webApi through restclient throws exception "Reference to undeclared entity 'nbsp'. Line 69, position 41."

我正在使用以下代码通过 RestSharp 从 C# 代码调用 Asp.net WebApi

 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);

The service throwing StatusCode : NotFound and ErrorException "Reference to undeclared entity 'nbsp'. Line 69, position 41." I am able to consume it from AngularJs but from C#(WebForm) using restclient it is throwing exception. Any help on this would be greatly appreciated. The Web API Controller Code is below

[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;
    }

我还附上了下面的异常细节图片

您能否尝试对您的请求进行这些修改,看看是否有帮助:

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);

已编辑:

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

并在之后放置一个断点,或显示响应,以查看返回的内容。

原因是请求中缺少 Api 控制器名称 Url

当我从 var request = new RestRequest("api/GetUserName", Method.POST);

进行更改时

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

它工作正常。完整代码如下

 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);

这是我的一个愚蠢的错误,感谢所有支持和帮助我的人