Поработав немного, мне удалось заставить его работать.
Установка сборки в .net 4.0 GAC не сделает ее доступной в раскрывающемся списке типов в диспетчере IIS в разделе «Добавить управляемый модуль».
Что мне нужно было сделать:
Создайте библиотеку классов .net 4.0 и скомпилируйте ее как сборку со строгим именем
Установите его в .NET 4.0 GAC с помощью gacutil, расположенного в папке Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools
(или сделать компиляцию Visual Studio, подписать и установить сборку автоматически)
Добавьте эту строку под <modules>
в applicationHost.config: (это должно быть сделано вручную, это не может быть сделано в менеджере)
<add name="MyName" type="NameSpace.ClassName" preCondition="managedHandler,runtimeVersionv4.0" />
Это заставляет модуль работать по запросам к сайтам, разработанным в .net 4.
Однако представляется, что запросы к сайтам, разработанным в версиях до .net 4, не могут использовать модуль, созданный в .net 4.0. Поэтому, если вы делаете запросы на страницы на сайте, созданном в .net 3.5, модуль не будет работать.
Еще одно наблюдение:
После добавления модуля в IIS через файл applicationHost.config, если вы откроете диспетчер IIS, выделите имя сервера в соединениях и щелкните модули. В списке вы увидите модуль .net 4.
Дважды щелкните по нему, и вы увидите настройки для него. Вы увидите, что установлен флажок «Вызывать только запросы к приложениям ASP.NET или управляемым обработчикам». Если вы снимите флажок и нажмете «ОК», вы получите сообщение о том, что сборка не была установлена в GAC.
Но разве я не просто успешно установил его в .net 4 GAC? И разве я не видел, как модуль запускается в запросе?
Если вы все равно продолжите и сохраните настройки, вы получите ошибку времени выполнения, и если вы загляните в applicationHost.config, вы увидите, что ранее добавленные вами настройки модуля изменились.
Но что, если я хочу «вызывать только запросы к приложениям ASP.NET или управляемым обработчикам?»