Example #1
0
 /// <summary>
 /// WEB 视图服务
 /// </summary>
 protected ViewServer()
     : base()
 {
     (NullAjaxResponse = AutoCSer.Net.Http.Response.New()).SetJsContentType(this);
     NullAjaxResponse.SetBody();
     (NullAjaxResponseStaticFile = AutoCSer.Net.Http.Response.New()).SetJsContentType(this);
     NullAjaxResponseStaticFile.CacheControl = AutoCSer.Net.Http.Response.StaticFileCacheControl;
     NullAjaxResponseStaticFile.SetBody();
     WebClientLog = webClientLog ?? AutoCSer.LogHelper.Default;
 }
Example #2
0
        /// <summary>
        /// 输出结束
        /// </summary>
        /// <param name="response">HTTP响应输出</param>
        /// <returns>是否操作成功</returns>
        internal unsafe bool SocketResponse(ref AutoCSer.Net.Http.Response response)
        {
            long identity = SocketIdentity;

            AutoCSer.Net.Http.SocketBase socket = Socket;
            try
            {
                AutoCSer.Net.Http.Header     header = socket.HttpHeader;
                AutoCSer.Net.Http.HeaderFlag flag   = header.Flag;
                if ((flag & AutoCSer.Net.Http.HeaderFlag.IsVersion) != 0 && (flag & Net.Http.HeaderFlag.IsRange) == 0)
                {
                    response.TryStaticFileCacheControl();
                }
                switch (response.Type)
                {
                case Net.Http.ResponseType.ByteArray:
                case Net.Http.ResponseType.SubByteArray:
                case Net.Http.ResponseType.SubBuffer:
                    if ((flag & Net.Http.HeaderFlag.IsRange) == 0)
                    {
#if DOTNET2 || DOTNET4
                        if ((flag & Net.Http.HeaderFlag.IsGZip) != 0 && isGZip)
                        {
                            response.Compress();
                        }
#else
                        if ((flag & Net.Http.HeaderFlag.IsGZip) != 0 && isGZip)
                        {
                            response.Compress(DomainServer.WebConfigIsFastestCompressionLevel);
                        }
#endif
                        response.NoStore200(DomainServer.HtmlContentType);
                    }
                    else if (header.FormatRange(response.Body.Array.Length))
                    {
                        response.NoStore200(DomainServer.HtmlContentType);
                    }
                    else if (socket.ResponseError(identity, AutoCSer.Net.Http.ResponseState.RangeNotSatisfiable416))
                    {
                        return(true);
                    }
                    break;
                    //case Net.Http.ResponseType.File: response.SetState(AutoCSer.Net.Http.ResponseState.Ok200); break;
                }
                if (socket.Response(identity, ref response))
                {
                    return(true);
                }
            }
            finally { AutoCSer.Net.Http.Response.Push(ref response); }
            return(false);
        }
Example #3
0
        ///// <summary>
        ///// HTTP请求头部处理
        ///// </summary>
        ///// <param name="domainServer">域名服务</param>
        ///// <param name="socket">HTTP套接字接口</param>
        ///// <param name="socketIdentity">套接字操作编号</param>
        ///// <param name="isAsynchronous">是否异步</param>
        ///// <param name="isPool">是否使用WEB页面池</param>
        //internal void LoadHeader(AutoCSer.Net.HttpDomainServer.ViewServer domainServer, AutoCSer.Net.Http.SocketBase socket, long socketIdentity, bool isAsynchronous, bool isPool)
        //{
        //    DomainServer = domainServer;
        //    Socket = socket;
        //    SocketIdentity = socketIdentity;
        //    IsAsynchronous = isAsynchronous;
        //    IsPool = isPool;
        //}
        ///// <summary>
        ///// 加载查询参数
        ///// </summary>
        ///// <param name="form">HTTP请求表单</param>
        ///// <param name="isAjax">是否ajax请求</param>
        ///// <returns>是否成功</returns>
        //internal virtual void Load(AutoCSer.Net.Http.Form form, bool isAjax)
        //{
        //    throw new InvalidOperationException();
        //}
        /// <summary>
        /// 清除当前请求数据
        /// </summary>
        protected virtual void clear()
        {
            if (PageResponse != null)
            {
                PageResponse.Push();
                PageResponse = null;
            }
#if !NOJIT
            Socket       = null;
            DomainServer = null;
            sessionId.Null();
#endif
        }
Example #4
0
 /// <summary>
 /// AJAX响应输出
 /// </summary>
 internal unsafe void Response()
 {
     if (Socket.HttpHeader.AjaxCallBackNameIndex.Length == 0 && PageResponse == null)
     {
         AutoCSer.Net.Http.Response response = (Socket.HttpHeader.Flag & Net.Http.HeaderFlag.IsVersion) == 0 ? DomainServer.NullAjaxResponse : DomainServer.NullAjaxResponseStaticFile;
         SocketResponse(ref response);
     }
     else
     {
         byte *buffer = AutoCSer.UnmanagedPool.Tiny.Get();
         try
         {
             Response(buffer);
             SocketResponse(ref PageResponse);
         }
         finally { AutoCSer.UnmanagedPool.Tiny.Push(buffer); }
     }
 }