如何设置.asmx webservice使用Asp.net启用跨域

我的网络服务代码是

[WebMethod] public List GetMachineData_List(string prefix, int person_id) { using (var db = new TestDB()) { List list = db.Fetch("select id,name from machine_data_collection mc where mc.id=@0 and name like '%" + prefix + "%'", person_id); return list.ToList(); } } 

我的jquery Ajax调用是

  $("#textbx").autocomplete( { source: function (request, response) { $.ajax({ url: 'http://localhost:4787/ws/webservice.asmx/GetMachineData_List', data: { prefix: request.term.toString() ,person_id:1}, dataType: "json", type: "POST", contentType: "application/json; charset=utf-8", success: function (data) { var jsonArray; try { jsonArray = $.parseJSON(data.d); // using jQuery } catch (e) { jsonArray = data.d; // using jQuery } response($.map(jsonArray, function (item) { return { id: item.id, value: item.Name }; })); }, error: function (XMLHttpRequest, textStatus, errorThrown) { var msg = XMLHttpRequest.responseJSON.d; if (msg == undefined) { alert( "Something went wrong !!" + errorThrown); } else { alert( "Error"+ msg); } } }); }, minLength: 2, select: function (event, ui) { var idControl = this.dataset.bindcontrol; try { alert(ui.item.id); } catch (ex) { alert( "Oops .. Something happend unexpected !! .. Please redo "); } } } ); 

我在web.config代码中启用了Cross-Origin

             

当文本框中的更改文本发生错误时。 来自Ajax调用的错误Meaasge是:

XMLHttpRequest无法加载http:// localhost:4787 / ws / webservice.asmx / GetMachineData_List 。 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。 因此不允许来源’ http:// localhost:21702 ‘访问。 响应的HTTP状态代码为500。

尝试在json调用中使用jsonp。

 $("#textbx").autocomplete( { source: function (request, response) { $.ajax({ url: 'http://localhost:4787/ws/webservice.asmx/GetMachineData_List', data: { prefix: request.term.toString() ,person_id:1}, dataType: "jsonp", 

Web.config文件中添加以下代码片段:

          ............. ..............       **...(add additional add names and values when you need).......**    

在我的情况下, webservice consumer app(Angular)的基本URL是http://localhost:4200

你必须在那个特定的地方提到你的基本url。