- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的网络应用程序中,我使用 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/
我遇到了一个关于呈现验证码图像的 ASHX 处理程序的真正令人烦恼的问题。真正让人头疼的是,它在两个月前还运行良好,而当我今天再次使用它时,它就停止工作了。 我得到的是一个经常抛出验证码的页面。这是来
每当我访问我的 ashx,例如 download.ashx?id=18 时,它都会获取文件,但是当保存对话框弹出时,它要我保存 download.ashx 而不是我存储在数据库中的文件(让说 mypd
我在使用 ASHX 处理程序时遇到问题。下面这段代码在本地机器上工作正常,但在服务器上不工作。 public void ProcessRequest(HttpContext context) {
1,sumbit表单提交 WebForm1.aspx源码: 复制代码代码如下: <%@ Page Language="C#" AutoEve
我有一个 ashx 处理程序,用于从 flex 页面上传文件。我无法扩展表单例份验证来保护 ashx 文件。有办法做到这一点吗? 最佳答案 您始终可以检查 .ashx 文件中的 context.Req
我在网上看到了很多关于如何通过从 UnsecuredLayoutsPageBase 等继承来允许匿名访问特定 SharePoint 应用程序页面的信息。 如何为布局目录中的 ashx 处理程序实现相同
我有 ashx 文件,我想从 ashx 重定向到 aspx 页面。一些解决方案? 最佳答案 void ProcessRequest(HttpContext context) { contex
我的业务逻辑代码存储在 .ashx 文件中。我发送一个 POST 请求来创建数据,并发送一个 GET 请求来检索 JSON 数据,然后将其显示在页面中。 我的问题是:如何防止 JoeNobody 直接
我正在尝试从我的 Amazon S3 存储桶加载远程图像并将其以二进制形式发送到浏览器。我也在尝试同时学习 ASP.Net。我多年来一直是一个经典的程序员,需要改变。我昨天开始,今天第一次头痛。 在我
我需要将大量数据从 Web 应用程序发送到 ASSX 处理程序。然后,处理程序会将数据发送到 Web 服务以获取响应。 (处理程序处理 Web 服务的原因是因为 Web 应用程序是用经典 ASP 编写
我正在尝试从我的 Amazon S3 存储桶加载远程图像并将其以二进制形式发送到浏览器。我也在尝试同时学习 ASP.Net。我多年来一直是一个经典的程序员,需要改变。我昨天开始,今天第一次头痛。 在我
我在我的应用程序中实现了一个适用于图像的通用处理程序,但是当我在浏览器中使用图像的查询字符串手动键入处理程序 URL 时,它会提示下载而不是显示。这是我的代码: public void Process
进行 ajax 调用 var request = $.ajax({ type: 'POST', url: "http://localhost/thcstore/AJAX/Aja
我在将逗号分隔的字符串拆分为数组时遇到问题。在我的 ashx 处理程序页面中,我的字符串如下所示: context.Response.Write(string.Format("{0},{1},{2},
双重道歉 - 首先,我是 ASP.net 的新手,所以我确定这是一个非常幼稚的问题,其次,看起来已经有一百个关于 ASP.NET 中相对路径的问题.不幸的是 - 我找不到能回答我问题的答案。 背景 -
我已经浏览了基本的 MSDN 信息和一些教程。根据我目前所学,我已经能够制作两个 .ashx 处理程序,我称之为 ImageHandler.ashx 和 PDFHandler.ashx。它们会按照您的
除了类似的问题,我找不到解决问题的方法。我对 JavaScript 也不是很熟练。 我创建了一个 ashx 处理程序来从 Sharepoint 站点下载文件。当数据库中的文件存在时,一切正常。如果文件
我有一个从 MySql 返回的图像。 Mysql中它的数据类型是image。我用 ashx 处理图像。下面的代码显示了我的 ashx 文件。 string imageID = context.Requ
当用户在浏览器中查看 ashx 文件时,我想更改打开窗口的“页面标题”。用户单击将在浏览器的新选项卡中打开的文档,并显示该文档(即 Word、Excel、PDF 等)。现在发生了什么,当我希望标题显示
我正在使用 ashx 提供来自数据库的图像,是否可以让用户单击允许他们在计算机上下载文件的链接。 (IE 显示保存对话框)就像您下载文件一样。这可能吗? 最佳答案 如果您希望它提示保存,请确保在创建响
我是一名优秀的程序员,十分优秀!