Beispiel #1
0
        /// <summary>
        /// HttpHandler의 작업의 메인 메소드입니다. 재정의 하여 원하는 기능을 수행하되, 제일 첫번째에 부모 클래스의 메소들를 호출해주어야 합니다.
        /// </summary>
        /// <param name="context"></param>
        protected override void DoProcessRequest(HttpContext context) {
            context.ShouldNotBeNull("context");

            if(IsDebugEnabled)
                log.Debug(@"Execution for request from HttpContext is starting...");

            try {
                var productName = context.Request[HttpParams.Product].AsText();

                if(IsDebugEnabled)
                    log.Debug("ProductName=[{0}]에 대한 요청 처리를 접수했습니다...", productName);

                var adapter = DataServiceTool.ResolveDataServiceAdapter(productName);

                // Silverlight 때문에 요청/응답을 Base64 문자열로 받습니다.
                var responseText = adapter.Execute(context.Request.InputStream.ToText());
                // var responseBytes = adapter.Execute(context.Request.InputStream.ToBytes());

                context.WriteResponse(responseText);

                if(IsDebugEnabled)
                    log.Debug("ProductName=[{0}]에 대한 요청 처리를 완료하였습니다!!!", productName);
            }
            catch(Exception ex) {
                if(log.IsErrorEnabled)
                    log.Error("요청을 처리하는 동안 예외가 발생했습니다.", ex);
            }
        }
        /// <summary>
        /// HttpHandler의 작업의 메인 메소드입니다. 재정의 하여 원하는 기능을 수행하되, 제일 첫번째에 부모 클래스의 메소들를 호출해주어야 합니다.
        /// </summary>
        /// <param name="context"></param>
        protected override void DoProcessRequest(HttpContext context) {
            context.ShouldNotBeNull("context");

            if(IsDebugEnabled)
                log.Debug(@"요청정보를 받아 처리를 시작합니다...");

            try {
                var productName = context.Request[HttpParams.Product].AsText();

                if(IsDebugEnabled)
                    log.Debug("ProductName=[{0}]에 대한 요청 처리를 접수했습니다...", productName);

                var adapter = XmlDataTool.ResolveXmlDataManagerAdapter(productName);
                var responseBytes = adapter.Execute(context.Request.InputStream.ToBytes());

                context.WriteResponse(responseBytes);

                if(IsDebugEnabled)
                    log.Debug("ProductName=[{0}]에 대한 요청 처리를 완료하였습니다!!!", productName);
            }
            catch(Exception ex) {
                if(log.IsErrorEnabled)
                    log.ErrorException("요청을 처리하는 동안 예외가 발생했습니다.", ex);
            }
        }
Beispiel #3
0
 public void ProcessRequest(HttpContext context)
 {
     Type type;
     MethodInfo method;
     bool ok;
     object result;
     ok = routeCheck(out type, out method, out result);
     if (ok) {
         ok = invoke(type, method, out result);
     }
     context.WriteResponse(ok, result);
 }
        /// <summary>
        /// HttpHandler의 작업의 메인 메소드입니다. 재정의 하여 원하는 기능을 수행하되, 제일 첫번째에 부모 클래스의 메소들를 호출해주어야 합니다.
        /// </summary>
        /// <param name="context"></param>
        protected override void DoProcessRequest(HttpContext context) {
            context.ShouldNotBeNull("context");

            if(IsDebugEnabled)
                log.Debug(@"JSON TEXT 형식의 요청에 대해 작업 후, JSON TEXT 문자열로 반환합니다.");

            try {
                var productName = context.Request[HttpParams.Product].AsText();
                var method = context.Request[HttpParams.Method].AsText();
                var responseFormat = context.Request[HttpParams.ResponseFormat].AsEnum(ResponseFormatKind.ResultSet);

                if(IsDebugEnabled)
                    log.Debug("ProductName=[{0}], Method=[{1}], ResponseFormat=[{2}] 에 대한 요청 처리를 접수했습니다...",
                              productName, method, responseFormat);

                var requestMessage = new RequestMessage();
                requestMessage.AddItem(method, responseFormat);

                var dataService = DataServiceTool.ResolveDataService(productName);
                var responseMessage = dataService.Execute(requestMessage);

                var responseText = JsonTool.SerializeAsText(responseMessage);
                var responseBytes = Compressor.Compress(responseText.ToBytes());

                context.WriteResponse(responseBytes);

                //var response = context.Response;
                //response.OutputStream.Write(responseBytes, 0, responseBytes.Length);
                //response.OutputStream.Flush();

                if(IsDebugEnabled)
                    log.Debug("ProductName=[{0}], Method=[{1}]에 대한 요청 처리를 완료하였습니다!!!", productName, method);
            }
            catch(Exception ex) {
                if(log.IsErrorEnabled)
                    log.Error("요청을 처리하는 동안 예외가 발생했습니다.", ex);
            }
        }