如何在ASP.NET中处理* .txt请求

时间:2011-01-11 13:01:31

标签: asp.net httphandler httpmodule

我在经典模式下运行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>

3 个答案:

答案 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" />