首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >张贴到Web参数为空

张贴到Web参数为空
EN

Stack Overflow用户
提问于 2014-03-26 21:18:15
回答 1查看 136关注 0票数 0

我有一个jquery方法,如下所示:

代码语言:javascript
复制
$.post("/api/amazon/signature", { "policy": policy }, function (data) {
    console.log(data);
});

api方法如下所示:

代码语言:javascript
复制
// POST api/amazon/signature
[HttpPost]
[Route("api/amazon/signature")]
public IHttpActionResult GetSignature([FromBody]string policy)
{
    var bKey = Encoding.ASCII.GetBytes(ConfigurationManager.AppSettings["AWSSecretKey"]);
    var hmacSha1 = new HMACSHA1(bKey);

    var bPolicy = Encoding.ASCII.GetBytes(policy);
    var hash = hmacSha1.ComputeHash(bPolicy);
    var encoded = Convert.ToBase64String(hash);

    return Ok(encoded);
}

但是,当我运行这段代码时,策略总是为空!如果我将我的方法改为:

代码语言:javascript
复制
public class Signature
{
    public string Policy { get; set; }
}

// POST api/amazon/signature
[HttpPost]
[Route("api/amazon/signature")]
public IHttpActionResult GetSignature([FromBody]Signature model)
{
    var bKey = Encoding.ASCII.GetBytes(ConfigurationManager.AppSettings["AWSSecretKey"]);
    var hmacSha1 = new HMACSHA1(bKey);

    var bPolicy = Encoding.ASCII.GetBytes(model.Policy);
    var hash = hmacSha1.ComputeHash(bPolicy);
    var encoded = Convert.ToBase64String(hash);

    return Ok(encoded);
}

并将jquery修改为:

代码语言:javascript
复制
$.post("/api/amazon/signature", { "Policy": policy }, function (data) {
    console.log(data);
});

效果很好..。

谁能告诉我原因吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-27 00:58:01

ASP.NET Web将整个请求体绑定到一个参数(只有一个参数,而不是多个参数)。默认情况下,主体绑定到复杂类型。因此,当您将参数类型更改为Policy (这是一个复杂的类型)时,不需要实际指定FromBody。此外,绑定现在运行正常,因为您正在发送类似于此{ "policy": policy }的JSON对象。Web在将JSON对象绑定到复杂类型方面没有问题。

对于一个简单的类型,在您的例子中,string,您必须指定FromBody,因为默认情况下,Web从URI路径和查询字符串绑定。但是,在这种情况下,您不能发送JSON对象。Web将将整个主体绑定到该参数,即string。因此,请求体必须是这样的字符串- "ABC123",而不是JSON对象。如果您只在请求体中发送" ABC123“(包括引号),则string参数将使用ABC123填充。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22673272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档