关于APIcloud对应C#的 wcf框架作为后台,实现多库功能
首先,我是使用ajax原来的请求方式,并没有使用apicloud中封装的请求方式。
前端代码:
function makeRequest() { //alert("inside makeRequest()"); var settings = { type: "GET", url: "http://192.168.0.105/Service1.svc/test", dataType: "JSON", error: function (XHR, textStatus, errorThrown) { //alert("XHR=" + XHR + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown); }, success: function (data, textStatus) { $("body").append(data); } , headers: { "token": "TextServer" } }; $.ajax(settings); }
后台接收方式呢,我这使用了EF框架,所以我会在实例化上下文时接收请求头数据,然后去中心库进行一个查询,拿到链接地址,然后将当前实例的地址更改,,最后返回这个更改后的上下文实例,这样数据就查到了对应公司所对应的数据库中的数据。
wcf-1
ISGuanWeiEntities contex = ConnectionStringDB.getISGuanWeiEntities();//改为该对象
wcf-2
class ConnectionStringDB { public static ISGuanWeiEntities getISGuanWeiEntities() { ISGuanWeiEntities context = new ISGuanWeiEntities(); //var s = System.Web.HttpContext.Current.Request.Headers; System.ServiceModel.Web.IncomingWebRequestContext request = System.ServiceModel.Web.WebOperationContext.Current.IncomingRequest; WebHeaderCollection headers = request.Headers; //获取客户端请求的值(公司名) string whereName = headers["token"];//token是我在前端请求头中设置的标识 //连接多库指挥中心数据库查找该公司的链接字符串 context.Database.Connection.ConnectionString = "中心数据库的链接地址;"; //--略过--通过查询中心库拿到对应的链接地址 //将链接字符串改为新的链接字符串 context.Database.Connection.ConnectionString = “新链接地址” //最终返回该对象 return context; } }
--还有个要注意,我这个自定义请求头‘token‘在IIS请求标头里面添加过的,我自己添加的,在IIS添加请求标头操作如下:
第一步
第二步
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/42931.html
- 上一篇:C# 之程序退出的方法
- 下一篇:APIO2010 特别行动队