REST PUT似乎未连接到服务器

本文关键字:连接 服务器 PUT REST | 更新日期: 2023-09-27 18:00:39

[已解决]

Subir Kumar Sao是完全正确的,这是一个CORS问题,而不是客户端,如果其他人通过托管用C#编码的服务器来解决同样的问题,这将是解决方案:

从对ASP.NETWebneneneba API的CORS支持中获取程序集,并将它们引用到您的服务器项目,然后在HttpSelfHostConfiguration下插入以下内容,最终如下所示:

var config = new HttpSelfHostConfiguration ("http://10.0.5.106:8000");
var enableCorsAttribute = new EnableCorsAttribute ("*", "*", "*")
{
    SupportsCredentials = true
};
config.EnableCors (enableCorsAttribute);

[问题]

我正在运行一个我在C#下使用VS2013编写的服务器,该服务器用于使用KineticJS托管在画布中的LED灯光控制应用程序。

我使用ChromePostman扩展对它进行了测试,它运行得很完美,我可以GET,也可以PUT。

由于这是我第一次使用REST编写代码,我决定使用jQuery中的.ajax,这似乎已经有了很好的文档。但出于某种奇怪的原因,它不起作用,我很失落,因为我可能错过了什么,我也无法检查发生了什么,因为从"错误"中返回的前任是空的。

这是我在客户端使用的代码:

$.ajax({
    url: 'http://10.0.5.106:8000/api/LED/Save',
    type: 'PUT',
    data: { N: '1', Pos: '10' },
    success: function() { alert('PUT completed'); },
    error: function(req,status,ex){alert(ex);}
});

为了理解我的服务器的结构,这里还有它的代码:

private static void RestServer()
{
    var config = new HttpSelfHostConfiguration ("http://10.0.5.106:8000");
    config.MapHttpAttributeRoutes ();
    HttpSelfHostServer server = new HttpSelfHostServer (config);
    server.OpenAsync ().Wait ();
    while (true) {
    }
}
[RoutePrefix ("api/LED")]
public class LEDController : ApiController
{
    [Route ("Save")]
    public HttpResponseMessage PutSave(int N, int Pos)
    {
        return Request.CreateResponse (HttpStatusCode.NoContent);
    }
    [Route ("Load")]
    public HttpResponseMessage PutLoad(int N, int Pos)
    {
        return Request.CreateResponse (HttpStatusCode.NoContent);
    }
    [Route ("Intense")]
    public HttpResponseMessage PutInt(int N, int I)
    {
        return Request.CreateResponse (HttpStatusCode.NoContent);
    }
    [Route ("RGB")]
    public HttpResponseMessage PutRGB(int N, int R, int G, int B, int I)
    {
        return Request.CreateResponse (HttpStatusCode.NoContent);
    }
}

REST PUT似乎未连接到服务器

这似乎是一个CORS问题。

点击此处阅读更多信息。

请阅读此处,了解如何启用CORS。