- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我遇到了一些问题,我在我的 web.config 文件中创建了一个类型作为 aspx 的 HTTPHandler,代码..
<add path="*.aspx" verb="*" type="myHandler"></add>
cs页面是
public class myHandler : IHttpHandler
{
public void ProcessRequest(System.Web.HttpContext context)
{
// check if client browser can accept gzip encoding
string AcceptEncoding = context.Request.Headers["Accept-Encoding"];
if (!string.IsNullOrEmpty(AcceptEncoding) && AcceptEncoding.Contains("gzip"))
{
// if yes, apply it
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
context.Response.AddHeader("Content-Encoding", "gzip");
}
// don't do anything else, just let the default page handling work
}
public bool IsReusable
{
get { return false; }
}
}
如您所见,我正在检查客户端是否接受 gzip 编码,如果是,则添加它,并让默认进程处理...但是我得到的回应是..
XML Parsing Error: no element found
Location: http://localhost:49903/Masters/Default.aspx
Line Number 1, Column 1:
^
每个页面都返回此错误?我猜测在我的处理程序中处理请求后,它会以某种方式清除所有其他内容或相关内容。
Firebug 显示以下内容..
Response Headers
Cache-Control private
Connection Close
Content-Encoding gzip
Content-Length 0
Date Sat, 06 Oct 2012 13:14:50 GMT
Server ASP.NET Development Server/10.0.0.0
X-AspNet-Version 4.0.30319
Request Headers
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Cookie ASP.NET_SessionId=1wfoaqta3mosntii1c3ual1i; .ASPXAUTH=D41BBDC2CCF15048BB5A345EBBFBC63EAE35FD37E2F1F170C1D68495477889A989353D4EB30F2B9A723F83C21293A47478B654A1BD2453BCF032DC539427EA0E519D2FEE70DB7660F00AA90E159633C4
Host localhost:49903
Referer http://localhost:49903/Masters/Default.aspx
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0.1
Request Headers From Upload Stream
Content-Length 8241
Content-Type multipart/form-data; boundary=---------------------------2995119424827
因此,根据我的猜测,我想知道有没有一种方法可以在我按照自己的方式处理页面后,执行类似 base.ProcessRequest()
的操作。我知道这是不可能的,因为我正在实现一个接口(interface)而不是从一个类派生,但我想知道,我如何让 asp.net 引擎在完成我的页面后处理页面?
NB 这个问题不是关于实现 gzib 编码的,我知道我可以在 web 配置中设置它,在每个页面,在 IIS 中,在实用程序类中创建一个静态函数并调用它,并且许多其他的事情。但同样,请不要回答我可以使用不同的方式来实现此 gzip 编码,我知道我可以,我关心的是如何让 asp.net 进行默认处理(或任何可能意味着)在我完成自定义处理之后?
最佳答案
你走错了路。您尝试使用的处理程序是通过添加 .aspx
来制作一种完全不同的方式来处理以不同扩展名结尾的某种文件,然后您处理该页面并且不允许 asp.net 处理所有页面。
你应该做的是制作一个httpModule
,例如类:
public class gZipModule : IHttpModule
{
void IHttpModule.Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
void IHttpModule.Dispose()
{
}
private void context_BeginRequest(object sender, EventArgs e)
{
// gzip here
}
}
和网络配置:
<httpModules>
<add type="gZipModule" name="gZipModule" />
</httpModules>
或者更简单,在 global.asax
上生成 Application_BeginRequest
gZip
protected void Application_BeginRequest(Object sender, EventArgs e)
{
// check if the file is .aspx, then make gzip
string cTheFile = HttpContext.Current.Request.Path;
string sExtentionOfThisFile = System.IO.Path.GetExtension(cTheFile);
if (sExtentionOfThisFile.Equals(".aspx", StringComparison.InvariantCultureIgnoreCase))
{
// now make gZip
}
}
关于asp.net - 使用asp.net HTTPHandler实现自己的代码然后调用它的默认实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12760185/
我收到此错误消息: .rvm/gems/ruby-2.5.1/bin/ruby_executable_hooks:24:in `' 我重新安装了 Ruby rvm reinstall ruby-2.5
我开始从事 WPF Ribbon 开发,非常好! 我的问题是找到(免费)基本图标(如文件保存/打开/等,剪切/粘贴/等)。 你有什么建议吗? 最佳答案 你看过Visual Studio Icon Li
我只找到经典的声音ID,但我需要Chord(默认)日历警报。如何播放声音? ks #define systemSoundID 1315 AudioServicesPlaySystemSound (s
在 Magento 中创建货件时,有一个复选框可让您“通过电子邮件发送货件副本”。 默认情况下未选中。有谁知道我需要编辑哪个文件才能默认设置为“选中”? 最佳答案 这是一个app/design/adm
我有一个简单的 IValueConverter,它只使用 TypeConverter 进行转换。但是,在某些情况下,提供的 TypeConverter 会失败。 如果转换器未提供 Binding,我想
我正在阅读教程,默认 Activity 是一个扩展另一个类的类,它所拥有的只是一个覆盖方法。应用程序如何工作,因为它不做任何其他事情?我很困惑! 最佳答案 父类 Activity 为您处理一切。 关于
我刚刚开始研究游戏框架。我正在尝试构建 rest api,并将 postgresql 用于我的数据库连接。这是我第一次同时使用 play 和 postgre。我在 build.sbt 中建立了一个数据
是否可以创建具有以下属性的 python 对象: class Foo: def __default_method__(x): return x f = Foo() f(10) > 10
我是 jQuery 的新手,遇到了一个烦人的问题。我有一些登录字段,当该字段为空时会填充默认文本,然后在单击时删除。 我的问题是,当用户保存了他们的用户名/密码(使用浏览器)时,如果他们返回页面,登录
考虑这个代码片段: void Foo(std::string str1, std::string str2) {} template void Bar() { Foo(Types{}...);
我正在编写一个简单的 C 程序,我应该用缓冲区溢出来攻击它。所以,我不想在编译时使用任何标志。如何消除使用的默认标志? # readelf -p .GCC.command.line stack Str
考虑这个代码片段: void Foo(std::string str1, std::string str2) {} template void Bar() { Foo(Types{}...);
我有以下代码[这是一道面试题]: #include #include using namespace std; class A{ public: A(){ cout co
我想在 Autofac 中为每个匹配的生命周期范围注册创建一个实例,但偶尔需要从全局容器(没有匹配的生命周期范围)请求一个实例。在不存在匹配生命周期范围的情况下,我想给出一个顶级实例而不是抛出异常。
我正在做一个收集单词共现的修改版本,所以我编写了自己的 javascript,我正在跟踪三个对象中的出现。但是,一旦对象变大(约 800 万、300 万和 172000),每 100000 个句子需要
我正在使用 pykalman 模块中的 KalmanFilter,我想知道它如何处理缺失的观察结果。根据文档: In real world systems, it is common to have
我有一个应用了 RenderTransform 的 Canvas ,如下所示: 谁能告诉我这些值是什么意思?我似乎无法找到用于解析这些值的转换器。 最佳答案 如 RenderTransform是 T
我是 Linux 的新手,现在使用 CentOS 6。我在这里使用 MySQL 工作台,每当我尝试添加新连接时,它都会询问我默认的 key 环密码。我真的不知道,这个密码是从哪里设置的,我之前没有设置
我在 Ubuntu 18.04 上工作。我没有定义 GL_GLEXT_PROTOTYPES .我使用 glXGetProcAddress 加载“核心”OpenGL 函数.我的申请链接到 /usr/li
我按照文档中的示例添加了对使用 asio 加载 HTTPS 站点的支持,这意味着我调用 ctx.set_default_verify_paths();使用系统默认路径来查找证书。 然而,我得到:una
我是一名优秀的程序员,十分优秀!