c# – 无法在Web Api 2中的BadRequest上收到错误消息
发布时间:2020-12-15 08:29:53 所属栏目:百科 来源:网络整理
导读:我已经google了很多搜索我的问题的答案没有运气所以,让我们尝试,如果别人可以帮助我. 在进行一些验证后,我有一个Web Api 2操作来注册用户.如果一切正常,它将返回序列化用户,如果没有,则返回BadRequest响应中发送的错误消息. 另一方面,我有一个WPF客户端调用A
我已经google了很多搜索我的问题的答案没有运气所以,让我们尝试,如果别人可以帮助我.
在进行一些验证后,我有一个Web Api 2操作来注册用户.如果一切正常,它将返回序列化用户,如果没有,则返回BadRequest响应中发送的错误消息. 另一方面,我有一个WPF客户端调用API进行响应. 我的问题是我无法得到错误发送的原因,客户端只是得到Bad Request错误消息. 这是代码的一部分: > Web Api动作: public async Task<IHttpActionResult> AddUser(NewUserDTO { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (!model.IdCliente.HasValue) { ModelState.AddModelError("","No existe el cliente"); return BadRequest(ModelState); } // do save stuff return Ok(TheModelFactory.Create(user)); } >客户端功能: public async Task<ApplicationUserDTO> AddUser(NewUserDTO dto) { using (var client = new HttpClient()) { client.BaseAddress = new Uri(_urlBase); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer",Token); HttpContent content = new StringContent(JsonConvert.SerializeObject(dto)); content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); HttpResponseMessage responseMessage = await client.PostAsync("api/accounts/AddUser",content); if (responseMessage.IsSuccessStatusCode) { var responseJson = await responseMessage.Content.ReadAsStringAsync(); user = JsonConvert.DeserializeObject<ApplicationUserDTO>(responseJson); } else MessageBox.Show(responseMessage.Content.ReadAsStringAsync().Result); return user; } } 有人可以帮忙吗? 编辑: > DTO: [Serializable] public class NewUserDTO { public int? IdCliente { get; set; } [Required] public string UserName { get; set; } [Required] public string Email { get; set; } public string Role { get; set; } public string Password { get; set; } } 无论如何… dto被正确发送到api nut,这是你要求的序列化dto: "{"IdCliente":null,"UserName":"Toni","Email":"soft@moreno-csa.com","Role":"Filtra","Password":"TONI"}" 解决方法
你检查过web.config httpErrors部分了吗?
我遇到了同样的问题,因为我的web.config看起来像这样 <httpErrors errorMode="Custom" existingResponse="Replace"> <clear /> <error statusCode="404" path="~/Error/NotFound" responseMode="ExecuteURL" /> <error statusCode="403" path="~/Error/AccessDenied" responseMode="ExecuteURL" /> <error statusCode="500" path="~/Error/ServerError" responseMode="ExecuteURL" /> </httpErrors> 您必须确保existingResponse设置为PassThrough <httpErrors errorMode="Custom" existingResponse="PassThrough"> <clear /> <error statusCode="404" path="~/Error/NotFound" responseMode="ExecuteURL" /> <error statusCode="403" path="~/Error/AccessDenied" responseMode="ExecuteURL" /> <error statusCode="500" path="~/Error/ServerError" responseMode="ExecuteURL" /> </httpErrors> 不确定它是否会对你有帮助,但要试一试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |