笔者在 Http Module 内建监听 Socket 后,客户端第一次连接正常,但后续通讯及第二次连接各种超时或异常,无数次调试后放弃该方案,后改用 http module + 服务后运行正常。
ISAPI 试了一次也不行,也不用试了,因为自 IIS 7 起, ISAPI 是 IIS 的一种 Http Module。
笔者猜测可能 IIS 对内置 Socket 监听作了限制,这个也算正常,但不正常的是这些情况找遍 MSDN 或 baidu 或 IIS 文档没有明确的说明,也许 google 上有相关文档,可惜上不去。其实哪怕微软在 IIS 的开发文档作一个相关的提示也好,有点坑爹。
试想单独的含 Socket 的 Http Modue 和 http module + 含Socket 服务,两者相比,前者少了各种数据映射和线程同步代码,代码量可减少一个数量级,但就是无法正常运行。
如果有读者有 Http Module 或 ISAPI 中内置监听 Socket 且正常运行的,拜托一定联系笔者,笔者必有重大利益交换。