【问题标题】:FastCGI with protocol = Tcp on IIS 7FastCGI 与协议 = IIS 7 上的 Tcp
【发布时间】:2011-07-26 12:34:15
【问题描述】:

我尝试使用 IIS 7(包括在 Windows 7 中)来测试我目前正在开发的 FastCGI 库。

根据最初的 FastCGI 规范,当一个应用程序被调用时,它的stdin 句柄被替换为一个套接字。默认情况下,IIS 使用命名管道,但可以将其配置为使用 TCP,即套接字。

当我尝试在我的测试应用程序中使用这个套接字时,我得到一个WSAENOTSOCK 错误。

当我尝试改用命名管道时(在重新配置 IIS 之后),我遇到了类似的问题。例如,当我尝试使用PeekNamedPipe 时,我得到一个ERROR_INVALID_HANDLEReadFileWriteFile 但是可以正常工作。

我猜问题是这个句柄是从父进程继承的,当前进程并不真正知道它的确切类型。似乎假设句柄代表一个简单的文件。

有没有人遇到过类似的问题并知道解决方案/解决方法?我能否以某种方式更新句柄的进程内状态,以便 WIN32 API 函数将其作为套接字/命名管道接受?

【问题讨论】:

    标签: sockets iis-7 tcp fastcgi named-pipes


    【解决方案1】:

    以防万一其他人偶然发现:DuplicateHandle 可以解决问题。

    实际上,libfcgi implementation 的函数OS_LibInit 显示了如何启动一个通过标准输入获取其套接字的 FastCGI 应用程序。

    【讨论】:

      猜你喜欢
      • 2020-12-12
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      相关资源
      最近更新 更多