gpt4 book ai didi

C# 如何压缩.ashx 内容?

转载 作者:太空狗 更新时间:2023-10-29 19:47:35 28 4
gpt4 key购买 nike

在我的网络应用程序中,我使用 ashx 文件将文件写入浏览器。我注意到没有压缩 .ashx 文件,只有我的 .aspx 文件。

是否可以压缩 .ashx?如果可能的话,怎么做?

目前我使用 global.asax 来处理压缩:

<%@ Application Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.IO.Compression" %>

<script runat="server">
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");
}
}
</script>

这会压缩除我的 .ashx 文件之外的所有内容。谁能帮帮我?

解决方案

因为我创建了一个 .ashx 文件,所以我自动创建了一个新类型(我的案例是 ViewMht)。这种类型没有通过第一个 if 语句:

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

如您所见,只有从“Page”继承的文件被压缩,而我的 ashx 文件不是 Page 类型。所以我添加了一个条件,现在它工作得很好:

if (!(app.Context.CurrentHandler is Page ||
app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler" ||
app.Context.CurrentHandler is ViewMht // This is the type I had to add
) ||
app.Request["HTTP_X_MICROSOFTAJAX"] != null)
return;

最佳答案

如果您的压缩是在 Global.asax 上完成的,那么您需要在此处放置压缩代码,以告诉您需要对程序进行哪些更改。

可能检查了文件扩展名。

关于C# 如何压缩.ashx 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2958929/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com