【问题标题】:How to handle *.txt requests in ASP.NET如何在 ASP.NET 中处理 *.txt 请求
【发布时间】:2011-01-11 13:01:30
【问题描述】:

我在 IIS7 下以经典模式运行 asp.net 应用程序。 我已经使用 ISAPI 模块创建了到“*”的脚本映射,但是当我执行 txt 请求(即使它不存在)时,我得到 404 错误:

通知 MapRequestHandler

处理程序静态文件

并且在 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>

【问题讨论】:

  • 你是否在处理程序映射部分的iis中注册了处理程序

标签: asp.net httphandler httpmodule


【解决方案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>

【讨论】:

  • 但是 StaticFileModule,DefaultDocumentModule,DirectoryListingModule 将不起作用
【解决方案2】:

您可以使用IIS Failed Request Tracing 查看实际请求的内容以及失败的位置。

【讨论】:

    【解决方案3】:

    已解决!

    问题出在我的操作系统上。我安装了 64x Windows,但在配置文件中我设置了 ISAPI dll 的 32x 路径。因此,为了解决这个问题,我添加了两行代码来处理 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" /> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      相关资源
      最近更新 更多