当前位置: 首页 > 面试题库 >

MVC Web API,错误:无法绑定多个参数

翟宾实
2023-03-14
问题内容

传递参数时出现错误,

“无法绑定多个参数”

这是我的代码

[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) {

    },
})


 类似资料:
  • 我正在使用JBoss6,但在尝试运行我的应用程序时遇到一个多版本错误: 错误[STDERR]SLF4J:类路径包含多个SLF4J绑定。 错误[STDERR]slf4j:在[vfs:/c:/jboss-6.0.0.final/common/lib/slf4j-jboss-logmanager.jar/org/slf4j/impl/staticloggerbinder.class]中找到绑定 错误[S

  • 我的依赖树和多个SLF4J绑定有问题。到目前为止,我发现这通常只会引起一个警告,但在我的情况下,它似乎会阻止我的程序运行:以下是我得到的例外情况: SLF4J:类路径包含多个SLF4J绑定。slf4j:在[jar:file:/c:/users/fischerni/.m2/repository/org/slf4j/slf4j-jdk14/1.5.3/slf4j-jdk14-1.5.3.jar!/or

  • 当我正在学习hadoop教程(http://hortonworks.com/hadoop-tutorial/hello-world-an-induction-to-hadoop-hcatalog-hive-and-pig/)时,我无法使用下载的数据文件创建表,因为我收到以下错误消息: 创建表时HCatClient错误:{“statement”:“使用default;create table nys

  • 问题内容: 我正在创建一个词解析类,并在运行此命令时始终收到“ < main .Word_Parser实例位于0x1037dd3b0>的绑定方法Word_Parser.sort_word_list ”的错误: 问题答案: 这里没有错误。您正在打印一个函数,这就是函数的外观。 要实际 调用 该函数,必须在其后放置括号。您已经在上面完成了。如果要打印调用函数的结果,只需让函数返回值,然后将打印内容放在

  • 我在尝试安装MAVEN时遇到了这个错误。我尝试了排除,但不确定在pom文件中包含的位置。让我在我的pom文件中应该包括怎样和什么排除标记。我还附加了我的pom文件片段,其中包括排除'SLF4J:Class path包含多个SLF4J绑定。 SLF4J:在[jar:file:/c:/users/147188/.m2/repository/ch/qos/logback/logback-classic/

  • 请帮助我,我是python新手,现在了解下面的错误 “TypeError:必须使用ExampleScript14实例作为第一个参数调用未绑定的方法assertEqual()(改为使用Get-str实例)” 有关以下代码: 从selenium从selenium导入webdriver。网络驱动程序。常见的按导入按导入单元测试导入时间从时间导入睡眠导入变量