/// <summary> /// 请求远程服务代理 /// </summary> /// <param name="url"></param> /// <param name="pars"></param> /// <returns></returns> public static Data.ServiceProxyReturn Request(string url, string key, params object[] pars) { var requestpar = new Data.ServiceProxyParam(); requestpar.Key = key; requestpar.Params = new List <Data.ServiceProxyMethodParam>(); if (pars != null) { foreach (var p in pars) { if (p == null) { requestpar.Params.Add(new Data.ServiceProxyMethodParam() { Value = null }); } else { var t = p.GetType(); if (t == typeof(string)) { requestpar.Params.Add(new Data.ServiceProxyMethodParam() { Value = p.ToString(), DataType = t.FullName }); } else if (t.IsClass || t.IsGenericType || t.IsArray) { var json = Serialization.JSon.ModelToJson(p); requestpar.Params.Add(new Data.ServiceProxyMethodParam() { Value = json, DataType = t.FullName }); } else { requestpar.Params.Add(new Data.ServiceProxyMethodParam() { Value = p.ToString(), DataType = t.FullName }); } } } } var request = new System.Net.WebClient(); request.Encoding = System.Text.Encoding.UTF8; var requestdata = Serialization.JSon.ModelToJson(requestpar); var r = request.UploadString(url, "post", requestdata); var result = Serialization.JSon.JsonToModel <Data.ServiceProxyReturn>(r); return(result); }
/// <summary> /// 检查请求是否正确 /// </summary> /// <param name="par"></param> /// <param name="result"></param> /// <returns></returns> public static Data.ServiceProxyInvokeItem CheckInvoke(Data.ServiceProxyParam par, Data.ServiceProxyReturn result, string configpath) { //从配置文件中读取代理的方法配置 if (methodProxyItems == null) { var proxyconfigpath = DoNet.Common.IO.PathMg.CheckPath(configpath); if (System.IO.File.Exists(proxyconfigpath)) { methodProxyItems = (List <Data.ServiceProxyInvokeItem>)DoNet.Common.Serialization.FormatterHelper.XMLDerObject(typeof(List <Data.ServiceProxyInvokeItem>), proxyconfigpath); } else { methodProxyItems = new List <Data.ServiceProxyInvokeItem>(); } } foreach (var item in methodProxyItems) { if (item.Key == par.Key || (item.Namespace == par.Namespace && item.ClassName == par.ClassName && item.MethodName == par.Method)) { var ip = Net.BaseNet.GetWebIPAddress(); if (item.IPAddress == "*" || item.IPAddress.Contains(ip)) { return(item); } else { DoNet.Common.IO.Logger.Write(ip + ",没有被允许请求"); result.Error = "ip error"; result.State = 3;//非法请求 return(null); } } } result.Error = "异常的请求,请确保请求参数正确。"; result.State = 3;//非法请求 return(null); }