ajaxcontroltoolkitのタブコンテナと透かしコントロールを含むフォームがあります。次の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);を実行すると Firebugコンソールで「Sys.Extendedisundefined」というエラーが発生しました。しかし、alert(Sys.Extended);のみを実行すると エラーではなく「未定義」というメッセージが表示されます。これは意味がありますか?また、ブラウザからページを保存すると、「ソースファイルを読み取れなかったため、default.jsを保存できませんでした」というメッセージが表示され、ページ内にページの.jsファイルが見つかりませんでした。 default_filesフォルダー。しかし、global.asaxファイルからgzipコードを削除すると、default_filesフォルダーにdefault.jsファイルが見つかりました。