- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个作为 ISAPI 过滤器实现的应用程序,它的行为需要根据它是由 ISA 还是 IIS 加载而改变。在 GetFilterVersion 期间,如果由 ISA 加载,则需要注册 SF_NOTIFY_SEND_RAW_DATA,如果由 IIS 加载,则需要注册 SF_NOTIFY_SEND_RESPONSE。
似乎没有任何关于传递给 GetFilterVersion 的服务器的信息。是否有一些技巧可以识别和区分 IIS 和 ISA?
[编辑]
在初始化时,在 GetFilterVersion 调用期间,应用程序需要知道哪个服务器正在加载它。当前没有请求,因此尝试从 header 变量中获取 SERVER_VARIABLE 将不起作用;此时没有 header 变量。
具体来说,我的应用程序设置了响应 header ,例如 cookie 和缓存控制 header 。当在 ISA 服务器上下文中运行时,它必须使用 SF_NOTIFY_SEND_RAW_DATA 事件来完成此操作,修改 ISA 代理发送的原始数据。然而,在 IIS 中,使用此通知会带来严重的性能损失,因此应用程序应使用 SF_NOTIFY_SEND_RESPONSE。 SF_NOTIFY_SEND_RESPONSE 不适用于 ISA,因为此事件不会针对代理响应触发,仅针对源自 ISA 本身的响应(例如错误页面)触发。最后,事件注册在 GetFilterVersion() 期间发生一次,并且一旦加载过滤器就无法修改。
因此,应用需要知道,在初始化期间,当它决定注册 SF_NOTIFY_SEND_RESPONSE 或 SF_NOTIFY_SEND_RAW_DATA 时,它是由 IIS 还是 ISA 加载的。
最佳答案
最新版本的 IIS 和 ISA 都应该使用工作进程运行。名称“w3proxy.exe”属于 ISA,“w3wp.exe”属于 IIS。获取当前进程名称并对其进行测试,瞧。
HANDLE winapi GetCurrentProcess()
和this :
DWORD WINAPI GetModuleFileNameEx(
__in HANDLE hProcess,
__in_opt HMODULE hModule,
__out LPTSTR lpFilename,
__in DWORD nSize
);
应该做的事
关于c - ISAPI 筛选器如何区分是由 IIS 或 ISA 加载的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2245592/
我的英语不好。首先我对此感到抱歉。我对 Android Studio 有疑问。我的操作系统是 LinuxMint。更新 v2.1.2 后,我的 AVD 不起作用。错误输出是这样的: Cannot la
英特尔在Xeon Phi上具有多个SIMD ISA,例如SSE,AVX,AVX2,AVX-512和IMCI。这些ISA在不同的处理器上受支持。例如,只有Skylake才支持AVX-512 BW,AVX
以下代码表示警告为 Direct access to objective-c's isa is deprecated in favor of object_setClass() and object_
根据这个 http://perldoc.perl.org/UNIVERSAL.html 我不应该使用UNIVERSAL :: isa(),而应该使用$ obj-> isa()或CLASS-> isa(
有什么区别: verify(mock, times(1)).myMethod(Matchers.isA(String.class)); verify(mock, times(1)).myMethod(
更新二:我写了两个例子来说明在接受的答案和评论中提出的想法。第一个 math_cmp.cc 执行显式类型操作。 // math_cmp.cc #include #include using nam
在 NSObject Class Reference 中,他们讨论了一个“isa 实例变量” is initialized to a data structure that describes the
我从未见过DOES之前在 Perl 程序中,但它在 docs 中上万能的。 我完全不明白 DOES 之间有什么区别和 ISA是,虽然。规范谈到了角色,可能通过聚合、委托(delegate)和模拟来完成
我正在尝试动态合并旧版本的模块 我们目前有一个使用模块的类......这个问题非常简单 use Modulev1; our @ISA = qw( Modulev1 ); sub new { m
在重构我的一些 perl 代码时,我 注意到以下奇怪的行为。 考虑这个小示例脚本: #!/usr/bin/perl -w package test; use strict; my $obj = ble
我有 ISA 层次结构的逻辑模型(“子树生成”设置为“每个实体的表”)。我将它设计为关系模型,当我想使用“生成 DDL”生成创建脚本时,我得到了这两个相同的错误: -- ERROR: No Discr
我无法理解指令集和指令集架构之间的区别。 我知道什么是 指令集 . 指令集只是定义了我们可以给处理器的可能指令,以及指令是如何给处理器的(因此是指令格式)。 现在是指令集架构 ? 我查了维基百科,它有
可靠地使用“isa()”的“最佳”方式是什么?换句话说,它可以在 上正常工作任何 值(value),而不仅仅是一个对象。 “最好”是指没有未处理的极端情况以及没有潜在的性能问题,所以这不是一个主观问题
我遇到了这段代码,但我不明白。 $type->isa('UNIVERSAL') or eval "require $type" or croak $@; 我引用了perldoc我知道子程序
ISA(例如 MIPS)和汇编语言之间有什么区别?我发现在某些上下文中它们似乎是同义词。 最佳答案 指令集架构(ISA)在物理上对应于特定处理器内的机器操作。这意味着 ISA 列出了可由特定处理器执行
我正在使用 C 编写 GameBoy 模拟器。现在我正在处理 CPU.c 文件,我对此处列出的一些指令感到有些困惑: http://realboyemulator.files.wordpress.co
我已经编写了一个 EDI 文档生成器,它当前会在 ISA 段中填充小于所需字符数的所有字段,并在左侧添加空格,例如“1234567890”表示 15 个字符的元素。我有一位客户希望我在右侧填充空格。我
我有这两个模块: package G1; sub new { my $class = shift; my $self = { one => 1, two
如果在 Java 中 B 扩展了 A。我们会说 B 'is-A' A。相反的方向关系叫什么? A“插入”B? 最佳答案 让我们将 A 替换为 Animal,将 B 替换为 Cat。如果 Cat 扩展
有什么区别 EasyMock.isA(String.class) 和 EasyMock.anyObject(String.class) (或提供的任何其他类) 在什么情况下您会使用其中一种而不是另一种
我是一名优秀的程序员,十分优秀!