Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpResponseMessage在响应中序列化_C#_Ajax_Asp.net Core - Fatal编程技术网

C# HttpResponseMessage在响应中序列化

C# HttpResponseMessage在响应中序列化,c#,ajax,asp.net-core,C#,Ajax,Asp.net Core,我有一个返回HttpResponseMessage的方法。因此,如果查询正确,它将返回一个BadRequest,否则返回200OK 我注意到查询总是以AJAX调用的success方法出现。即使我回了一个不好的请求。在查看我的网络标签后,我注意到一些奇怪的行为。一般请求是200OK,但是HttpResponseMessage在主体中被序列化为JSON 我真的不明白为什么会这样。我的代码如下所示: [HttpPost] public async Task<HttpResponseMessa

我有一个返回HttpResponseMessage的方法。因此,如果查询正确,它将返回一个BadRequest,否则返回200OK

我注意到查询总是以AJAX调用的
success
方法出现。即使我回了一个不好的请求。在查看我的网络标签后,我注意到一些奇怪的行为。一般请求是200OK,但是HttpResponseMessage在主体中被序列化为JSON

我真的不明白为什么会这样。我的代码如下所示:

[HttpPost]
public async Task<HttpResponseMessage> Register([FromBody] RegisterPresentationModel register)
{
    if (register == null)
        return new HttpResponseMessage(HttpStatusCode.BadRequest)
        {
            ReasonPhrase = "Value passed in request is null"
        };

    if (register.Password != register.ConfirmPassword)
        return new HttpResponseMessage(HttpStatusCode.BadRequest)
        {
            ReasonPhrase = "Passwords do not match"
        };
    var user = new UserPassPresentationModel
    {
        Email = register.Email,
        UserName = register.UserName,
        Roles = new List<string> {ApplicationRoles.User},
        Password = register.Password,
        ConfirmPassword = register.ConfirmPassword
    };
    return await _userRepo.Add(user);
}

好。。。为什么从控制器返回
HttpResponseMessage
?使用
Ok()
BadRequest
Json
甚至
ObjectResult
来代替这个。是的,我现在改为使用IActionResult并发送这些值。虽然很奇怪,因为我发誓HttpResponseMessage以前是有用的!好。。。为什么从控制器返回
HttpResponseMessage
?使用
Ok()
BadRequest
Json
甚至
ObjectResult
来代替这个。是的,我现在改为使用IActionResult并发送这些值。虽然很奇怪,因为我发誓HttpResponseMessage以前是有用的!
$.ajax({
    url: "/api/auth/",
    type: "post",
    headers: {
        'Content-Type': "application/json"
    },
    data: JSON.stringify(register),
    success: function (data) {
        console.log(data);
    },
    error: function (data) {
        element.registerform.isValid = false;
        element.registerform.error = data.responseText;
    }
});