在Windows窗体中配置web api以接受CORS

时间:2013-06-11 13:18:10

标签: c# jquery json cross-browser asp.net-web-api

我正在为大学做一个项目,其中一个WebSite将命令发送到Windows窗体应用程序。此应用程序负责访问串行端口以及发送和接收命令。

网站和Windows窗体应用程序之间的通信,我使用了Web Api。我需要设置webapi实现CORS,但我见过的所有示例都是针对MVC而我需要Windows Forms。我放置了我从客户端调用的订单以及我的Windows窗体中的webapi是如何配置的。

另外,请输入Chrome返回的错误。

使用Windows窗体的WebApi类

public class GPSController : ApiController
{
    [HttpGet]
    public Coordenada Posicao()
    {
        return TCCWindows.FormPrincipal.PegarCoordenadas();
    }
}

配置WebApi Windows窗体

private void button2_Click_2(object sender, EventArgs e)
{
    if (button2.Text == "Iniciar serviço")
    {
        var config = new HttpSelfHostConfiguration(textBox1.Text);

        config.Routes.MapHttpRoute(
            "API Default", "api/{controller}/{id}",
            new { id = RouteParameter.Optional });


        server = new HttpSelfHostServer(config);
        server.OpenAsync();
        MessageBox.Show("Serviço inicializado!");
        button2.Text = "Parar serviço";
    }
    else
    {
        server.CloseAsync();
        button2.Text = "Iniciar serviço";
    }
}

获取WebApi Jquery我的MVC网站

function cmdLocal() {
    $.ajax({
        type: "GET",            
        dataType: "json",
        url: "http://localhost:8089/api/gps/",
        success: function(callback){
           alert(callback);
        },
        error: function(err){
            alert("You have a error"+err);
        }
    });         
}

使用Chrome

获取cmdLocal时出错
XMLHttpRequest cannot load http://localhost:8089/api/gps/. Origin http://localhost:36452 is not allowed by Access-Control-Allow-Origin. 

如何在Windows窗体应用程序中实现CORS?

TKS

1 个答案:

答案 0 :(得分:0)

如果CORS支持是作为DelegatingHandler实现的,那么它与Web Host和self host的使用方式应该没有区别。 唯一的问题是CORS实现是否依赖于HttpContext

您尝试使用哪种CORS实现?

顺便说一句,你的Windows窗体应用程序需要以管理员的身份运行才能运行。