2013-10-14 1 views
1

IIS FTP 7.5 в Windows 7 кэширует сборку с помощью специального расширения (управляемый код, C#).IIS FTP 7.5: сборка пользовательского расширения становится кэшированной и не обновляется

После запуска сервера в первый раз с этим файлом библиотеки, новые версии его не будет травление, независимо от того, перезагружать ли сервер, установить-деинсталлировать от GAC и т.д.

Единственный способ получить новый файл реализации в IIS FTP - это изменить имя версии в сильном имени.

Есть ли способ заменить реализацию без изменения номера версии, просто заменив файл?

Это странное поведение делает отладку и изменение mgmt практически невозможным.

Подобное поведение наблюдалось Artiom на этом посту: http://www.flexlabs.org/IIS7-Modules/custom-authentication-extension

ответ

1

Нашел причину этого «кэширование».

IIS запускает компоненты расширяемости в приложении COM + под названием «Microsoft Extensibility Host». После загрузки расширения сборка загружается в соответствующий процесс (размещается dllhost.exe) и, следовательно, на него не влияют изменения GAC.

Рабочий раствор (охватывает немного больше элементов, чем объем исходного вопроса):

  • FTP сервис сконфигурирован для загрузки моего расширения компонента написана с использованием .NET 3.5 - потому что он принимает только .NET 2.0 во время выполнения; если вы реализуете расширение во время выполнения 4, он просто не будет запущен

  • Компонент расширения, в свою очередь, нуждается в большой базе кода, которая реализована с использованием .NET 4.5 - и это делается через COM (эти API-интерфейсы зарегистрированы в COM, но не в GAC)

  • При перекомпиляции расширения службы FTP достаточно обновить GAC и завершить работу приложения COM + с возможностью расширения Microsoft FTP, а также, предпочтительно, службы FTP.

Теперь мне не нужно менять сильное имя (путем изменения номера версии) сборки расширения службы FTP для каждого изменения.