IIS FTP 7.5:自定义扩展程序集被缓存,不会更新

时间:2013-10-14 23:26:10

标签: iis ftp extensibility

Windows 7上的IIS FTP 7.5使用自定义扩展(托管代码,C#)缓存程序集。

首次使用该库文件启动服务器后,无论是重新启动服务器,还是从GAC安装卸载等,都不会获取新版本的服务器。

将新实现文件导入IIS FTP的唯一方法是更改​​强名称中的版本名称。

有没有办法在不更改版本号的情况下替换实现,只需更换文件?

这种奇怪的行为使调试和更改mgmt几乎不可能。

Artiom在这篇文章中发现了类似的行为:http://www.flexlabs.org/IIS7-Modules/custom-authentication-extension

1 个答案:

答案 0 :(得分:1)

找到这种“缓存”的原因。

IIS在名为“Microsoft FTP发布服务可扩展性主机”的COM +应用程序中运行可扩展性组件。加载扩展后,程序集将加载到相应的进程(由dllhost.exe托管)中,因此不会立即受到任何GAC更改的影响。

工作解决方案(涵盖了比原始问题范围更多的元素):

  • FTP服务配置为加载使用.NET 3.5编写的扩展组件 - 因为它只接受.NET 2.0运行时;如果你在运行时4中实现扩展,它就不会运行

  • 扩展组件又需要使用.NET 4.5实现的大型代码库 - 它通过COM实现(这些API在COM中注册,但不在GAC中注册)

  • 当我重新编译FTP服务扩展时,它足以更新GAC并关闭“Microsoft FTP发布服务可扩展性主机”COM +应用程序,最好也是FTP服务。

现在,我不必为每次更改更改FTP服务扩展程序集的强名称(通过更改版本号)。