0

有一个表单,其中包含来自 ajaxcontroltoolkit 的 tabcontainer 和水印控件。出现 java 错误:使用以下 gzip 过程时未定义 Sys.Extended 。以下代码来自 Global.asax 文件:

void Application_PreRequestHandlerExecute(object sender, EventArgs e)
    {
        HttpApplication app = sender as HttpApplication;
        string acceptEncoding = app.Request.Headers["Accept-Encoding"];
        Stream prevUncompressedStream = app.Response.Filter;

        if (!(app.Context.CurrentHandler is Page ||
            app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
            app.Request["HTTP_X_MICROSOFTAJAX"] != null)
            return;

        if (acceptEncoding == null || acceptEncoding.Length == 0)
            return;

        acceptEncoding = acceptEncoding.ToLower();

        if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
        {
            // defalte
            app.Response.Filter = new DeflateStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "deflate");
        }
        else if (acceptEncoding.Contains("gzip"))
        {
            // gzip
            app.Response.Filter = new GZipStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "gzip");
        }
    }

当我删除上面的代码时,错误消失了,一切正常。

这是来自 web.config 的控制标签:

<controls>
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add tagPrefix="ajaxToolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit"/>
    <add tagPrefix="HTMLEditor" namespace="AjaxControlToolkit.HTMLEditor" assembly="AjaxControlToolkit"/>
</controls>

当我运行 alert(Sys.Extended.UI.TabPanel); 在萤火虫控制台中,我收到错误“Sys.Extended 未定义”。但是当我只运行 alert(Sys.Extended); 是给出消息“未定义”而不是错误。这有意义吗?而且我还想提一下,当我从浏览器保存页面时,我给出了一条消息“无法保存 default.js,因为无法读取源文件”并且我没有在页面中找到页面的 .js 文件default_files 文件夹。但是当我从 global.asax 文件中删除 gzip 代码时,我在 default_files 文件夹中找到了 default.js 文件。

4

1 回答 1

0

您在使用 ToolKitScriptManager 吗?如果是这样,请检查复合脚本的顺序是否正确:

<compositescript>
    <scripts>
        <asp:scriptreference name="WebForms.js" assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" scriptmode="Release"></asp:scriptreference>    
        <asp:scriptreference name="WebUIValidation.js" assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" scriptmode="Release"></asp:scriptreference>    
        <asp:scriptreference name="MicrosoftAjax.js" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" scriptmode="Release"></asp:scriptreference>    
        <asp:scriptreference name="MicrosoftAjaxWebForms.js" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" scriptmode="Release"></asp:scriptreference>
    </scripts>
</compositescript>

Sys中提到的更多可能性未定义

于 2012-09-23T21:24:16.310 回答