前端调用跨域问题
前端调用出现这个问题
解决方法:
1.在webconfig中添加如下代码
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
放置位置在
2.在每个控制器中添加一个方法如下(目前还未验证不添加是否可行)
public string Options()
{
return null;
}
web接口返回类型设置为json
1.添加服务引用
2.引用头文件
using System.Web.Script.Serialization;
可以使用JObject、JArray两种类型灵活组合
List<tb_measure> measureList = new List<tb_measure>();
tb_measureBLL bll = new tb_measureBLL();
measureList = bll.getMeasureListByOrgID(orgID);
obj.Add("State", 0);
JArray list = new JArray();
foreach (var ent in measureList)
{
JObject record = new JObject();
record.Add("id", ent.measure_id);
record.Add("name", ent.measure_name);
list.Add(record);
}
obj.Add("records", list);
当返回类型为string时
经过处理去掉多余的引号
return new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") };
json为string 方法返回的类型为HttpResponseMessage