2010-11-22 91 views
1

我正在开发一个小型IIS7本机模块。IIS7本地模块问题

当我在IIS中创建页面请求时,我无法从它获取任何输出。

所以我已经向后迈出了一步,试图使MSDN示例中的一个先工作。麻烦的是 - 我不能得到任何输出,要么...

样品是在这里:

http://msdn.microsoft.com/en-us/library/ms693622(VS.90).aspx

我已经做了以下内容:

。确保我已经导出了RegisterModule

。将该模块构建为Win32 dll

。添加了一个web.config和test.aspx页面,该页面只显示“hello world”

。在服务器级别使用IIS gui

将本地模块添加到IIS中。在站点级别为我的模块添加了“* .aspx”所有动词的处理程序映射。

。重新启动IIS

我可以看到我的web.config已更新,包括:

<system.webServer> 
    <handlers> 
     <add name="EndRequestModule" path="*.aspx" verb="*" modules="MyHttpModule" scriptProcessor="<REALPATHISINHERE>\endRequestModule.dll" resourceType="Unspecified" preCondition="bitness32" /> 
    </handlers> 
</system.webServer> 

在这一点上,我期待看到在事件查看器线,当我提出要求 - 但没有。

我也添加了一些“OutputDebugString”调用,试着去看看模块何时加载或响应请求,但我没有看到任何输出,这让我觉得我缺少一些configesque ...

我正在运行Windows 7 Ultimate x64和VS2010 - 是否有任何额外需要安装或其他配置(可能在x86和x64之间),因为它不是服务器操作系统?

对我可能错过的任何想法都会受到欢迎。

谢谢。

+0

fwiw procexp显示我的w3wp进程是x64,我的dll目前是x86,为x64添加一个项目配置,并重新生成目标为x64的dll结果为503,服务不可用并且应用程序池停止,事件查看器显示访问违反错误....我敢肯定,这是什么与x86与x64,我可以强制测试网站运行x86而不是x64来测试POC? – 2010-11-22 11:16:20

回答

2

固定。

除非需要特别过滤处理器映射,否则不需要处理程序映射,只需在服务器级别安装模块就可以了,然后在站点级别删除不需要模块的站点。

IIS中的应用程序池高级设置 - 将启用32位应用程序设置为TRUE以测试POC。

然后为x64平台重新构建DLL,卸载现有模块,安装x64,将Enable 32位应用程序设置为FALSE,然后测试x64模块。

OutputDebugString调用现在也显示在DbgView中。

+0

我试图在Win7 64和VS2010上做同样的事情。我已经为x64构建了我的模块,但应用程序池停止并出现503错误。我已经完成了你上面所说的。我仍然排除故障。你可以给我什么建议? – 2011-10-01 13:15:32

+0

其实我只是想清楚我的问题是什么,它是事实,IIS 7无法加载从我的个人资料下的Visual Studio项目模块。我不得不复制我的个人资料目录之外的DLL,然后IIS 7很高兴加载它。哈哈! – 2011-10-01 14:16:33