我在经典模式下运行IIS7下的asp.net应用程序。 我已经使用ISAPI模块创建了脚本映射到'*',但是当我执行txt请求时(即使它不存在)我得到404错误:
通知MapRequestHandler
Handler StaticFile
并且没有在Global.asax或模块中触发任何事件。 我错过了什么吗?
<system.web>
...
<httpHandlers>
<add verb="*" path="*" validate="false" type="TestCustomExtensions.TextFileHandler, TestCustomExtensions" />
</httpHandlers>
<httpModules>
<add name="text" type="TestCustomExtensions.TextModule"/>
</httpModules>
</system.web>
<system.webServer>
...
<modules>
<add name="textModule" type="TestCustomExtensions.TextModule"/>
</modules>
<handlers>
<add name="TextFiles" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
</handlers>
,</system.webServer>
答案 0 :(得分:1)
您可能需要删除StaticFile
处理程序:
<handlers>
<remove name="StaticFile" />
</handlers>
<强>更新强>
尝试以下操作(HTTP处理程序的顺序很重要):
<handlers>
<remove name="StaticFile" />
<add name="TextFiles" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule"
resourceType="Either" requireAccess="Read" />
</handlers>
答案 1 :(得分:0)
您可以使用IIS Failed Request Tracing查看实际请求的内容以及失败的位置。
答案 2 :(得分:0)
解决!
问题出在我的操作系统中。我安装了64x Windows,但在配置文件中我设置了32x路径到ISAPI DLL。因此,为了解决这个问题,我添加了两行,以处理32x和64x操作系统。
<add name="TestFiles64" path="*.txt" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
<add name="TextFiles32" path="*.txt" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv2.0,bitness32" />