예제 #1
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="context"></param>
 public HttpServiceRequest(HttpContext context)
 {
     _buffer = new MessageStructure();
     httpGet = new HttpGet(context.Request);
     response = new HttpGameResponse(context.Response);
     ParamString = httpGet.ParamString;
     SessionId = httpGet.SessionId;
 }
예제 #2
0
파일: GameHttpHost.cs 프로젝트: luost/Scut
 /// <summary>
 /// 
 /// </summary>
 /// <param name="context"></param>
 public void Request(HttpContext context)
 {
     var actionDispatcher = GameEnvironment.Setting.ActionDispatcher;
     RequestPackage package;
     if (!actionDispatcher.TryDecodePackage(context, out package))
     {
         return;
     }
     var session = GetSession(context, package);
     package.Bind(session);
     ActionGetter actionGetter = actionDispatcher.GetActionGetter(package);
     BaseGameResponse response = new HttpGameResponse(context.Response);
     response.WriteErrorCallback += actionDispatcher.ResponseError;
     DoAction(actionGetter, response);
 }
예제 #3
0
 protected void Page_Load(object sender, EventArgs e)
 {
     try
     {
         var actionDispatcher = GameEnvironment.Setting.ActionDispatcher;
         RequestPackage package;
         if (!actionDispatcher.TryDecodePackage(HttpContext.Current, out package))
         {
             return;
         }
         ActionGetter actionGetter = actionDispatcher.GetActionGetter(package);
         BaseGameResponse response = new HttpGameResponse(HttpContext.Current.Response);
         ActionFactory.RequestScript(actionGetter, response, GetUser);
     }
     catch (Exception ex)
     {
         TraceLog.WriteError("Service error:{0}", ex);
     }
 }
예제 #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            HttpResponse response = HttpContext.Current.Response;
            response.Charset = "unicode";// "unicode";
            HttpGet httpGet = new HttpGet(HttpContext.Current.Request);
            IGameResponse gameResponse = new HttpGameResponse(response);
            String ActionID = string.Empty;
            if (httpGet.GetString("ActionID", ref ActionID))
            {
                try
                {
                    string actionName = string.Concat("Action", ActionID);
                    string sname = string.Concat("ZyGames.DirCenter.Action." + actionName);
                    object[] args = new object[1];
                    args[0] = response;

                    BaseStruct obj = (BaseStruct) Activator.CreateInstance(Type.GetType(sname), new object[] { httpGet });
                    obj.DoInit();
                    if (obj.ReadUrlElement() && obj.DoAction() && !obj.GetError())
                    {
                        obj.BuildPacket();
                        obj.WriteAction(gameResponse);
                    }
                    else
                    {
                        obj.WriteErrorAction(gameResponse);
                        return;
                    }
                }
                catch (Exception ex)
                {
                    BaseLog oBaseLog = new BaseLog("DirCenterErrMain");
                    oBaseLog.SaveLog(ex);
                }
            }
        }
예제 #5
0
파일: ActionFactory.cs 프로젝트: 0jpq0/Scut
 /// <summary>
 /// 请求脚本处理
 /// </summary>
 /// <param name="userFactory">创建user对象工厂</param>
 public static void RequestScript(Func<int, BaseUser> userFactory = null)
 {
     HttpGet httpGet = new HttpGet(HttpContext.Current.Request);
     IGameResponse response = new HttpGameResponse(HttpContext.Current.Response);
     RequestScript(httpGet, response, userFactory);
 }
예제 #6
0
파일: ActionFactory.cs 프로젝트: 0jpq0/Scut
 /// <summary>
 /// 请求处理
 /// </summary>
 /// <param name="typeName"></param>
 /// <param name="userFactory"></param>
 public static void Request(string typeName, Func<int, BaseUser> userFactory)
 {
     if (HttpContext.Current == null)
     {
         throw new Exception("HttpContext is not supported.");
     }
     HttpGet httpGet = new HttpGet(HttpContext.Current.Request);
     IGameResponse response = new HttpGameResponse(HttpContext.Current.Response);
     Request(typeName, httpGet, response, userFactory);
 }
예제 #7
0
 /// <summary>
 /// on web site use
 /// </summary>
 /// <param name="context"></param>
 public void Request(System.Web.HttpContext context)
 {
     string userHostAddress = httpListener.HttpCdnAddress.GetUserHostAddress(context.Request.UserHostAddress, key => context.Request.Headers[key]);
     var actionDispatcher = GameEnvironment.Setting.ActionDispatcher;
     RequestPackage package;
     if (!actionDispatcher.TryDecodePackage(context, out package))
     {
         return;
     }
     var session = GetSession(context, package);
     session.RemoteAddress = userHostAddress;
     package.Bind(session);
     ActionGetter actionGetter = actionDispatcher.GetActionGetter(package, session);
     BaseGameResponse response = new HttpGameResponse(context.Response);
     response.WriteErrorCallback += actionDispatcher.ResponseError;
     DoAction(actionGetter, response);
 }