我有一个测试系统,其中 Windows 7 SSL 网站上的 IIS Express 必须与 Cerberus FTP 服务器 SSL 网站共存(Cerberus FTP 有一个用于 HTTP 上传的内置 Web 服务器)。
我已将 Windows 设置为使用路由器的两个 IP
- 192.168.1.128(用于 IIS SSL 网站,目前使用自生成的 SSL 证书)
- 192.168.1.129(用于 Cerberus FTP 内置 SSL 网站)
在 IIS 中,我已将网站绑定设置为仅使用 IP 192.168.1.128。但当我启动 Cerberus 时,它仍然显示 - 无法绑定 192.168.1.129:443。
我在 Firefox 中测试过 - 确实,当我转到 192.168.1.129(甚至是 localhost)时,我没有像预期的那样看到“无法连接”页面,而是看到“连接已重置”。IIS 仍然占用着这些 IP,尽管它没有在这些 IP 上为网站提供服务。
当我停止 IIS 网站时,Cerberus FTP 网站可以顺利启动。但是,我无法启动 IIS 网站,它提示“该进程无法访问该文件,因为该文件正在被另一个进程使用”。
为什么 IIS SSL 网站仍然占用所有 IP?
答案1
因为 IIS 是一个力求高效的专业工具。
它对端口号的所有地址进行一次绑定,然后在绑定中进行内部排序。
你不想要它吗?设置DisableSocketPooling。
http://support.microsoft.com/kb/892847
或更好
http://msdn.microsoft.com/en-us/library/cc307219(VS.85).aspx
基本上,IIS 使用 http.sys - 任何严肃的工具都应该这样做,因此 Cerberus 忽略 Windows 核心机制是一种耻辱 - 并且您必须告诉 http.sys 只监听特定地址。