Как обрабатывать * .txt запросы в ASP.NET - PullRequest
0 голосов
/ 11 января 2011

Я запускаю приложение asp.net под IIS7 в классическом режиме. Я уже создал сопоставление сценария с '*' с помощью модуля ISAPI, но когда я выполняю txt-запрос (даже если он не существует), я получаю ошибку 404 с:

Уведомление MapRequestHandler

Обработчик 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 ]

1 голос
/ 11 января 2011

Вам, вероятно, нужно удалить обработчик 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>
0 голосов
/ 12 января 2011

Решено!

Проблема была в моей ОС.У меня установлено 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" /> 
0 голосов
/ 11 января 2011

Вы можете использовать IIS Failed Request Tracing , чтобы увидеть, что на самом деле запрашивается и где происходит сбой.

...