我正在为大学做一个项目,其中一个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
答案 0 :(得分:0)
如果CORS支持是作为DelegatingHandler实现的,那么它与Web Host和self host的使用方式应该没有区别。
唯一的问题是CORS实现是否依赖于HttpContext
。
您尝试使用哪种CORS实现?
顺便说一句,你的Windows窗体应用程序需要以管理员的身份运行才能运行。