Example #1
0
        /// <inheriteddoc />
        protected sealed override void OnProcessRequest(IHttpRequest request)
        {
            dynamic result = CreateResultObject(code: 0);

            try
            {
                this.OnProcessJsonRequest(request, ref result);
            }
            catch (Exception ex)
            {
                result = CreateResultObject(code: -1,
                                            msg: (ex.GetBaseException() ?? ex).Message,
                                            data: CreateErrorJsonObject(ex));
            }

            // write to output
            var resultContent = "";

            try
            {
                if (result != null)
                {
                    var serializer = new JsonSerializer();

                    using (var strWriter = new StringWriter())
                    {
                        using (var jsonWriter = new JsonTextWriter(strWriter))
                        {
                            serializer.Serialize(jsonWriter, result);

                            resultContent = strWriter.ToString();
                        }
                    }
                }

                request.Response.ContentType = string.Format("application/json; charset={0}",
                                                             this.Charset.WebName);
                request.AddResponseHeader("Content-Length", resultContent.Length);

                request.Write(this.Charset
                              .GetBytes(resultContent));
            }
            finally
            {
                resultContent = null;
            }
        }