0

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

网站与 Windows 窗体应用程序之间的通信,我使用了 Web Api。我需要设置 webapi 实现 CORS,但我看到的所有示例都是针对 MVC 的,我需要针对 Windows 窗体。我下了我从客户端调用的订单以及我的 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

4

1 回答 1

0

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

您尝试使用什么 CORS 实现?

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

于 2013-06-11T13:40:18.487 回答