有没有一个.NET FastCGI库?

6

我正在开发一个小型服务器,该服务器通过http接口进行交互。为了使其能够与不同的成熟http服务器一起使用,我选择了FastCGI作为通用接口。

现在我找不到一个(免费的).NET库来实现FCGI接口并为我完成所有艰苦的工作。你知道有吗?

5个回答

5
请查看 Mono.WebServer.FastCGI:
https://github.com/mono/xsp/tree/master/src 此外,这里还有一个 FastCGI 客户端:
http://sourceforge.net/projects/fcgidotnet/ FastCGI 规范在这里:
http://www.fastcgi.com/devkit/doc/fcgi-spec.html 你可以在这里找到符合 OWIN 标准的实现:
https://github.com/mzabani/Fos 此外,这些库也很有趣:
HyperFastCGI:
https://github.com/xplicit/HyperFastCgi 或者
https://github.com/gigi81/sharpfastcgi 或 #cgi
https://github.com/wmeyer/SharpCGI 如果需要更多 FastCGI 客户端示例,请参阅此 Go 库:
https://github.com/tomasen/fcgi_client

3

我不知道有没有(我也在寻找)

问题在于FastCGI似乎要求您将一个监听套接字的句柄传递给子进程,以取代正常的StdIn句柄——这是标准的.Net类(Process、Socket等)不允许的。 这意味着使用P / Invoke调用本机Windows功能重新实现Process和Socket类来实现.Net中的FastCGI库。


谢谢您的回复。我仍在寻找这样的库。我之前并不知道这些困难,那么也许创建一个本地包装器来代理请求到我的托管服务器会更容易一些? - Milan
@entity64 这听起来是个好主意 - 另一种选择就是用 .Net 语言重新实现它。 - Justin
我不理解你的第二点。根据我的理解,有一个作为客户端的Web服务器,它连接到一个(服务器)FastCGI进程来转发请求。该进程本身可能是另一个服务器进程的客户端。在我的理解中,没有必要转移处理Web服务器/FastCGI接口的套接字的所有权。 - schoetbi

2
我最近在F#中实现了这样一个库:SharpCGI。同样适用于C#。
Kragen描述的问题可以通过一些Win32技巧解决,利用.NET内部机制。但是,如果您配置您的Web服务器来使用指定端口进行FastCGI,则不必使用该方法。请注意保留HTML标签。

1
SharpCgi在Mono上运行吗?Kragen描述的问题如何影响在Mono上设置的SharpCgi? - ssn

2

是的,有许多库,如SharpCGI和FCGIDotNet,但它们都实现了协议的服务器端。我仍然需要找到与现有的FastCGI服务器通信的代码,这与所有这些库所做的相反(尽管其代码90%相同)。


@Quandary 这不是用C#编写的。 - Maestro

2
我来这里是想说,我写了一个用C#编写的FastCGI库,可能对未来的读者有用。它没有很详细的文档(FastCgi是一个相当简单的标准,所以我不认为需要),但我认为它已经足够好地记录下来供他人使用。
目前,它为应用程序服务器和Web服务器都提供API,尽管一些功能可能仍然缺失。你应该去看看。
虽然我最近没怎么动它,但它确实对我非常有效(我仍在使用它)。

你可以通过NuGet或我的GitHub下载它。它被称为FastCgiNet


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接