有一个表单,其中包含来自 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 文件。