![]() |
1
2
微软为此发布了一个修补程序: |
![]() |
2
2
由于iis7从上到下使用.NET,因此使用httpmodule不会产生任何性能开销,事实上,有几个托管httpmodules始终用于每个请求。当触发BeginRequest事件时,会话状态模块可能尚未添加到模块集合中,因此如果在此事件期间尝试处理请求,则会话状态信息将不可用。如果请求的处理程序需要,设置httpContext.handler属性将初始化会话状态,因此您只需将处理程序设置为实现IRequiresSessionState的奇特404页。下面的代码应该可以做到这一点,尽管您可能需要为isMissing()方法编写不同的实现:
编辑:我添加了isMissing()的实现 注意:在iis7上,会话状态模块默认不全局运行。有两个选项:为所有请求启用会话状态模块(请参阅上面关于为所有请求类型运行托管模块的注释),或者可以使用反射访问system.web.dll中的内部成员。 |
![]() |
3
2
在Vista的ServicePack2中修复了无法传递给自定义错误处理程序的POST变量的IIS7中的问题。还没有在Windows服务器上尝试过,但我确信它也将在那里修复。 |
![]() |
4
0
猜测一下:iis7的%windir%\system32\inetsrv\config\applicationhost.config中指定的处理程序根本不允许post动词通过,它正在评估该规则,然后确定URL是否不存在。 |
![]() |
5
0
是的,我绝对推荐URL重写(使用微软的iis7一种或多种备选方案之一)。这是专门为提供友好的URL而设计的,而错误文档是失败的最后一道障碍,它往往会吞噬传入的数据,因此它可能不是您所期望的。 |