C# REST PUT似乎没有连接到服务器

C# REST PUT似乎没有连接到服务器,c#,javascript,jquery,asp.net,rest,C#,Javascript,Jquery,Asp.net,Rest,[已解决] 完全正确,这是CORS问题,而不是客户端问题,以防其他人通过托管一个用C#编码的服务器而遇到同样的问题,这将是解决方案: 从服务器项目中获取程序集并将其引用到服务器项目中,然后在HttpSelfHostConfiguration下插入以下内容,最终如下所示: var config = new HttpSelfHostConfiguration ("http://10.0.5.106:8000"); var enableCorsAttribute = new EnableCorsAt

[已解决]

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

从服务器项目中获取程序集并将其引用到服务器项目中,然后在
HttpSelfHostConfiguration
下插入以下内容,最终如下所示:

var config = new HttpSelfHostConfiguration ("http://10.0.5.106:8000");

var enableCorsAttribute = new EnableCorsAttribute ("*", "*", "*")
{
    SupportsCredentials = true
};
config.EnableCors (enableCorsAttribute);

[问题]

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

我使用Chrome的Postman扩展进行了测试,它工作得完美无缺,我可以得到,也可以放入

因为这是我第一次使用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);
    }
}

这似乎是CORS的问题

阅读更多


阅读如何启用CORS。

似乎是CORS的问题。调用ajax服务的页面是否驻留在同一个域中?
10.0.5.106
。是的,所有内容都驻留在同一个域中,但是客户端应用程序驻留在不同的端口中,如果这很重要的话。请尝试像这样传递参数,
数据:“N=1&Pos=10”
,不幸的是,这是我传递参数的第一种方式,也不起作用,改为我现在所做的,从长远来看使结构更简单。@Subir Kumar Sao你是100%正确的,这是一个CORS问题,我必须启用它服务器端使用,如果我要用解决方案更新我的答案,如果你想,你可以复制粘贴它,我会将它标记为答案,因为你一开始就对了。