Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 /// <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);
 }