Получить .net для обработки всех запросов в IIS7 - PullRequest
4 голосов
/ 29 марта 2012

У меня было приложение, которое работало на IIS 6. Все запросы проходили через aspnet_isapi.dll. Это было достигнуто с помощью сопоставления приложения с подстановочными знаками (которое не проверяло существование файла).

Я скопировал указанное приложение на компьютер с IIS7 и хотел бы, чтобы оно снова заработало.

В приложении любой запрос с расширением .aspx (или .ashx) обрабатывается обычным способом. Другие запросы с другими расширениями (например, .html и .xml) обрабатываются с помощью специального модуля http. Некоторые запросы не имеют расширения и динамически перенаправляются в файл с расширением (например, посещение… / item / 1 может перенаправить на… / item / 1.html или… / item / 1.xml, в зависимости от значений в заголовке accept. ).

Возможно, новое местоположение не существует, но ответ генерируется динамически.

В настоящее время пул приложений находится в «классическом» режиме и использует .NET v4.0 (ранее он использовал .NET 3.5, но, похоже, это не связано с проблемой). Пользовательский модуль http устанавливается только в файле web.config.

Перенаправление (от… / item / 1 до… / item / 1.html), похоже, работает, что говорит о том, что приложение действительно обрабатывает меньше запросов на расширение (это перенаправление записывается в самом приложении). Я думаю, это означает, что пользовательский модуль работает.

Однако запросы с расширениями (.html, .xml и т. Д.) Не выполняются. Я получаю ошибку:

HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

Module: IIS Web Core
Notification: MapRequestHandler
Handler: StaticFile
Error Code: 0x80070002

Я пытался: Добавление сопоставления сценария с подстановочными знаками, сопоставленного * с aspnet_isapi.dll Попытка добавления определенного сопоставления для * .html в aspnet_isapi.dll

Это все равно приводит к тому же сообщению об ошибке, и, похоже, все еще идет к обработчику "StaticFile".

Я попытался изменить «StaticFile», чтобы он использовал исполняемый файл aspnet_isapi.dll, и это привело к новой ошибке:

HTTP Error 404.4 - Not Found
The resource you are looking for does not have a handler associated with it.
Handler: Not yet determined

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

10 голосов
/ 29 марта 2012

Установить пул приложений в интегрированном режиме и установить, чтобы все запросы запускали все управляемые модули

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
  ...
  </modules>
  ...
</system.webServer>
0 голосов
/ 05 апреля 2015

Используйте этот конфиг в сервисном конфиге, он работал для меня.

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="WcfService.Service1">
        <endpoint address=""
                  binding="basicHttpBinding"
                  bindingConfiguration="secureHttpBinding"
                  contract="WcfService.IService1"/>

        <endpoint address="mex"
                  binding="mexHttpsBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="secureHttpBinding">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpsGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...