配置IIS7以服务器通配符ISAPI DLL和静态文件

时间:2009-06-06 22:34:17

标签: iis-7 isapi

我有一个在IIS中配置的ISAPI DLL,用于通配符映射。当请求URL对应于静态文件时,我希望IIS的StaticFileModule提供该文件。当文件不存在时,我希望ISAPI DLL处理它。

我的web.config的处理程序部分位于静态文件层次结构的根目录中,看起来像这样......

<handlers accessPolicy="Read, Script">
    <clear />
        <add name="SomeIsapiDll" path="*" verb="*" type="" 
            modules="IsapiModule" scriptProcessor="C:\my_site\some_isapi.dll" 
            resourceType="Unspecified" requireAccess="None" allowPathInfo="false" 
            preCondition="" responseBufferLimit="4194304" />
        <add name="StaticFile" path="*" verb="*" type="" 
            modules="StaticFileModule,DefaultDocumentModule" scriptProcessor="" 
            resourceType="Unspecified" requireAccess="None" allowPathInfo="false" 
            preCondition="" responseBufferLimit="4194304" />
</handlers>

这适用于针对ISAPI DLL的请求,但静态文件以404的形式返回。如果我颠倒了订单,我只会得到没有任何内容的空白页面。如果我从web.config中删除ISAPI DLL,则会正确提供静态文件,但当然,不会提供ISAPI请求。

我的理解是级联外卡处理程序应该可以工作,但我能找到的Microsoft文档对于如何实现这一点非常模糊。这可能是配置问题或ISAPI DLL实现的问题,但此时我不知道。想法?

1 个答案:

答案 0 :(得分:1)

我们遇到了同样的问题,然后我们添加了这些:

<add name="aspnet_isapi 32-bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness32" />

<add name="aspnet_isapi 64-bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness64" />