服务端是用vs2013里WCF做的REST风格的web service。
客户端是用jquery+ajax访问web service。
参考 http://www.topwcftutorials.net/2014/01/crud-wcf-restful-service.html。
调试中发生跨域访问错误,试了很多方法,终于解决。
参考 https://www.codeproject.com/Articles/845474/Enabling-CORS-in-WCF。
解决方法就是增加两个文件, Global.asax 和 Global.asax.cs。
Global.asax 就一句话:
<%@ Application Codebehind="Global.asax.cs" Inherits="Wcf.App.Global" Language="C#" %>
Global.asax.cs 内容如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
namespace Wcf.App
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
}
protected void Session_Start(object sender, EventArgs e)
{
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
//HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST, PUT, DELETE");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
}
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
}
protected void Application_Error(object sender, EventArgs e)
{
}
protected void Session_End(object sender, EventArgs e)
{
}
protected void Application_End(object sender, EventArgs e)
{
}
}
}