Asp.net web api 使用页眉在asp.net web API中发布数据

Asp.net web api 使用页眉在asp.net web API中发布数据,asp.net-web-api,Asp.net Web Api,大家好,我是Asp.net Web API的新手,我有我的问题,我的答案被接受了 这是对同一个问题的扩展,我想在Postman中发布一些标题值的数据,我的代码如下 public HttpResponseMessage PostCustomer([FromBody] NewUser userData, string devideId) { //My code return response; } 当我在BODY-raw中的Postman传递JSON格式的值时,我得到了如下消息

大家好,我是Asp.net Web API的新手,我有我的问题,我的答案被接受了

这是对同一个问题的扩展,我想在Postman中发布一些标题值的数据,我的代码如下

public HttpResponseMessage PostCustomer([FromBody] NewUser userData, string devideId)
{
    //My code 
    return response;
}
当我在BODY-raw中的Postman传递JSON格式的值时,我得到了如下消息

public HttpResponseMessage PostCustomer([FromBody] NewUser userData, string devideId)
{
    //My code 
    return response;
}
未找到与请求URI匹配的HTTP资源 在控制器上找不到与请求匹配的操作


请帮帮我。

看起来您在操作中添加了一些额外的
设备ID
字符串参数。请确保在发出请求时将值作为查询字符串提供给它:

POST http://localhost:58626/api/customers?devideId=foo_bar
如果不希望将此参数设置为必需参数,则应将其设置为可选参数(就.NET中的可选方法参数而言):

现在您可以发布到
http://localhost:58626/api/customers
不提供此参数的值

备注:您不需要使用
[FromBody]
属性修饰复杂的对象类型(例如
NewUser
)。这是WebAPI中的默认行为


更新:以下是如何读取自定义标题:

public HttpResponseMessage PostCustomer(NewUser userData)
{
    IEnumerable<string> values;
    if (this.Request.Headers.TryGetValues("X-MyHeader", out values))
    {
        string headerValue = values.FirstOrDefault();
    }

    ...

    return response;
}
public HttpResponseMessage后客户(NewUser userData)
{
i可数值;
if(this.Request.Headers.TryGetValues(“X-MyHeader”,out值))
{
字符串headerValue=values.FirstOrDefault();
}
...
返回响应;
}

显示您的路由配置以及您发送此请求的确切方式。如何从标头读取并获取标头值,而不是作为参数传递?请使用代码中的
request.Headers
集合,更具体地说,使用其上的
TryGetValues
方法。我更新了我的答案,用一个例子加以说明。