[英]How would one successfully return a BadRequest with an MVC Model?
我的目的是创建一个错误的请求响应,并将其传递给对象。 原因是要与我的返回类型保持一致。 我曾尝试将序列化为JSON序列化,但响应与发送对象不同。
因此,如果可以通过任何方式发送此消息,那将非常高兴。 另外,我知道在.NET核心中有一种方法可以执行此操作,但是我宁愿仅使用.Net,因为我有更多选择,并且我正在与其他依赖此方法的项目一起工作。
// POST: api/postLogin
[AllowAnonymous]
[System.Web.Http.HttpPost, System.Web.Http.Route("postlogin")]
public async Task<IHttpActionResult> PostLogin(LoginDTO login)
{
OutputDTO<LoginDTO> output = new OutputDTO<LoginDTO>();
LoginDTO loginDTO = null;
try
{
if (!ModelState.IsValid)
{
output.Success = false;
output.SetValidations(ModelState);
output.ErrorMessage = "Invalid Model";
return BadRequest(output);
}
login newLogin = new login();
string encryptedPassword = Crypto.ApplyPasswordObfuscation(login.Password, true);
login loginUser = await _context.login.SingleOrDefaultAsync(m =>
m.name == login.Username && m.password == encryptedPassword);
if (loginUser == null)
{
output.Success = false;
output.ErrorMessage = "Invalid login credentials";
var json = new JavaScriptSerializer().Serialize(output);
return BadRequest(json); // Not 401, since you don't want to return to the login page. Client will be already on login page
}
else
{
loginDTO = new LoginDTO(loginUser);
output.Success = true;
output.Results = new List<LoginDTO>
{
loginDTO
};
return Ok(output);
}
}
catch (Exception e)
{
output.Success = false;
output.ErrorMessage = "Login " + e;
return BadRequest(output);
}
}
您应该能够返回“内容”并指定状态码和对象。
例如
return this.Content(HttpStatusCode.BadRequest, output);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.