C# asp.net web api AJAX状态0

C# asp.net web api AJAX状态0,c#,asp.net,ajax,asp.net-web-api,C#,Asp.net,Ajax,Asp.net Web Api,我正在尝试使用asp.net Web API创建基本REST帖子,但它返回错误状态:0。此外,它看起来还失败了AJAX请求 我的控制器: [HttpPost] public myData Post( myData m) { return m; } 我的班级: public class CLData { public string FirstName { get; set; } public string LastName { get; s

我正在尝试使用asp.net Web API创建基本REST帖子,但它返回错误状态:0。此外,它看起来还失败了AJAX请求

我的控制器:

[HttpPost]
    public myData Post( myData m)
    {
        return m;
    }
我的班级:

public class CLData
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}
我的HTML请求:

    <html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>

<body>
    <script>
        //form encoded data
         var dataType = 'application/x-www-form-urlencoded; charset=utf-8';
         var data = $('form').serialize();

         //JSON data
         var dataType = 'application/json; charset=utf-8';
         var data = {
            FirstName: 'Andrew',
            LastName: 'Lock',
            Age: 31
         }

         console.log('Submitting form...');
         $.ajax({
            type: 'POST',
            url: 'http://localhost:52884/api/contact',
            dataType: 'json',
            contentType: dataType,
            data: data,
            success: function(result) {
                console.log('Data received: ');
                console.log(result);
            },
            error: function(error){
                console.log('Error: ');
                console.log(error);
            }
        });
    </script>
</body>

</html>

有人知道我做错了什么吗?我只是想学习Web API,这就是为什么这个示例如此简单。

如果您的应用程序不能同时提供Web视图和API端点,则需要启用跨源请求。为此,您需要在WebAPI项目中配置Cors。您可以在网站上找到如何执行此操作的详细分类

但是,要点是安装nuget pacakge Microsoft.AspNet.WebApi.Cors。您可以通过执行安装包Microsoft.AspNet.WebApi.Cors来执行此操作。从那里,您将更新WebApiConfig注册方法,以包括config.EnableCors;在顶端


接下来,您将使用[EnableCors]属性装饰控制器类。从那里,您应该能够发出跨源请求。

作为一个实验,尝试将“url:”替换为“url:”/api/contact”。假设您的应用程序实际上同时承载API端点和服务页面。如果它不提供页面服务,您需要在应用程序中启用跨源请求。仍然存在相同的问题。谢谢。它避免了跨原点警告,但我仍然从AJAX错误方法中得到错误。看看这个
Submitting form..
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:52884/api/contact. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Error: 
Object with status: 0