programing

MVC 웹 API, 오류:여러 매개 변수를 바인딩할 수 없습니다.

bestprogram 2023. 10. 4. 22:14

MVC 웹 API, 오류:여러 매개 변수를 바인딩할 수 없습니다.

매개변수를 전달할 때 오류가 발생합니다.

"여러 매개 변수를 바인딩할 수 없음"

여기 내 코드가 있습니다.

[HttpPost]
public IHttpActionResult GenerateToken([FromBody]string userName, [FromBody]string password)
{
    //...
}

아약스:

$.ajax({
    cache: false,
    url: 'http://localhost:14980/api/token/GenerateToken',
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    data: { userName: "userName",password:"password" },

    success: function (response) {
    },

    error: function (jqXhr, textStatus, errorThrown) {

        console.log(jqXhr.responseText);
        alert(textStatus + ": " + errorThrown + ": " + jqXhr.responseText + "  " + jqXhr.status);
    },
    complete: function (jqXhr) {

    },
})

참조: ASP의 파라미터 바인딩.NET Web API - [FromBody] 사용하기

메시지 본문에서 읽을 수 있는 매개변수는 최대 하나입니다. 그러면 작동하지 않습니다.

// Caution: Will not work!    
public HttpResponseMessage Post([FromBody] int id, [FromBody] string name) { ... }

이 규칙의 이유는 요청 본문이 한 번만 읽을 수 있는 버퍼링되지 않은 스트림에 저장될 수 있기 때문입니다.

나의 역점

그런 말이 있습니다.예상 집계 데이터를 저장할 모형을 생성해야 합니다.

public class AuthModel {
    public string userName { get; set; }
    public string password { get; set; }
}

그리고 신체에서 그 모델을 기대할 수 있도록 행동을 업데이트합니다.

[HttpPost]
public IHttpActionResult GenerateToken([FromBody] AuthModel model) {
    string userName = model.userName;
    string password = model.password;
    //...
}

페이로드를 제대로 보낼 수 있도록 하는 것.

var model = { userName: "userName", password: "password" };
$.ajax({
    cache: false,
    url: 'http://localhost:14980/api/token/GenerateToken',
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify(model),
    success: function (response) {
    },

    error: function (jqXhr, textStatus, errorThrown) {

        console.log(jqXhr.responseText);
        alert(textStatus + ": " + errorThrown + ": " + jqXhr.responseText + "  " + jqXhr.status);
    },
    complete: function (jqXhr) {

    },
})

언급URL : https://stackoverflow.com/questions/44599041/mvc-web-api-error-cant-bind-multiple-parameters