Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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
Jquery 未找到来自属性路由的路由_Jquery_Asp.net_Ajax_Asp.net Web Api - Fatal编程技术网

Jquery 未找到来自属性路由的路由

Jquery 未找到来自属性路由的路由,jquery,asp.net,ajax,asp.net-web-api,Jquery,Asp.net,Ajax,Asp.net Web Api,我有一个Web API(v>2.0)Web服务,其中的控制器不完全响应我的ajax请求 这是控制器 public class MyController : ApiController { [Route("api/object")] //working public string Method1(string param) { return JsonConvert.SerializeObject(Service.GetBy(param)); }

我有一个Web API(v>2.0)Web服务,其中的控制器不完全响应我的ajax请求

这是控制器

public class MyController : ApiController
{
    [Route("api/object")] //working
    public string Method1(string param)
    {
        return JsonConvert.SerializeObject(Service.GetBy(param));
    }

    [Route("api/object")] //not working
    [HttpPost]
    public void Method2(string param)
    {
        Service.Insert(JsonConvert.DeserializeObject<MyObject>(param));
    }
}
GET
方法有效,但是
POST
方法无效,它返回代码404

有趣的是,在我提交POST请求之前,两个步骤中的同一个页面调用同一个页面来检索JSONified MyObject,这是可以预期的


我已经在webservice Web.Config和ajax调用中配置了CORS,如何使其正常工作?

根据您使用json的代码示例判断,请记住将ajax调用更改为:

$.ajax({
    url : 'http://localhost/api/object',
    type : 'POST',
    contentType : 'application/json',
    data : JSON.stringify(/* my object */)
    success : successHandler,
    error : errorHandler
});
contentType
告诉web端点您正在发送一条http消息,消息正文中的内容是json。您不需要将消息数据包装到对象中,因为您正在发送一个json字符串,该字符串将是类似于
MyObject
class stringyfied的javascript对象

然后将控制器操作更改为:

public class MyController : ApiController
{
    [HttpGet]
    [Route("api/object")] //working
    public string Method1(string param)
    {
        return JsonConvert.SerializeObject(Service.GetBy(param));
    }

    [Route("api/object")] //this will work
    [HttpPost]
    public void Method2([FromBody]MyObject param)
    {
        Service.Insert(param);
    }
}

WebApi知道如何处理json,并将消息体内容反序列化为您的模型类型

当你说它不起作用时,你从请求中得到了什么状态码?还有,为什么要发送序列化的JSON字符串呢?只需发送带有标准参数的请求,并让模型活页夹为您工作。使用返回进行编辑code@fra9001没问题,伙计,很高兴我能帮忙:)
public class MyController : ApiController
{
    [HttpGet]
    [Route("api/object")] //working
    public string Method1(string param)
    {
        return JsonConvert.SerializeObject(Service.GetBy(param));
    }

    [Route("api/object")] //this will work
    [HttpPost]
    public void Method2([FromBody]MyObject param)
    {
        Service.Insert(param);
    }
}