我有一个在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实现的问题,但此时我不知道。想法?
答案 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" />