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

发布于 2024-10-11 06:57:28 字数 1012 浏览 7 评论 0原文

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

Notification 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>

I've running asp.net application under IIS7 in classic mode.
I've already created script mapping to '*' with ISAPI module, but when i perform txt request (even if it not exists) i get 404 error with:

Notification MapRequestHandler

Handler StaticFile

and no event is fired in Global.asax or modules.
Do i missed something?

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

墟烟 2024-10-18 06:57:28

您可能需要删除 StaticFile 处理程序:

<handlers>
    <remove name="StaticFile" />
</handlers>

UPDATE

尝试以下操作(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>

You probably need to remove the StaticFile handler:

<handlers>
    <remove name="StaticFile" />
</handlers>

UPDATE

Try the following (the order of HTTP handlers is important):

<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>
你没皮卡萌 2024-10-18 06:57:28

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

You could use IIS Failed Request Tracing to see what actually gets requested and where it fails.

耳根太软 2024-10-18 06:57:28

解决了!

问题出在我的操作系统中。我安装了 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" /> 

Resolved!

The problem was in my OS. I have 64x windows installed, but in config file i set 32x path to ISAPI dll. So, to resolve this, i've added two lines, to handle both 32x and 64x OS.

<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" /> 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文