1

我有一个在 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 实现的问题,但目前我不知道。想法?

4

1 回答 1

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" />
于 2009-07-02T22:48:00.113 回答