.net 有成熟的、单声道兼容的FastCGI库吗?

.net 有成熟的、单声道兼容的FastCGI库吗?,.net,mono,fastcgi,.net,Mono,Fastcgi,我想建立一个运行在Mono上的持久应用服务器,它需要能够接受web请求并返回一些合适的响应。这是一项简单的任务,FastCGI的用途非常广泛,但我似乎找不到一个不与ASP.NET粘合在一起的FastCGI解决方案 更清楚的是:我对ASP.NET不感兴趣,也不想使用它或尝试加入ASP.NET堆栈的任何部分。我真正需要的是一种通过FastCGI与Web服务器接口的方法,其余的我都能解决。也许你可以将FastCGI C库与Mono接口 另一种可能是使用该协议。该协议(某种程度上比FastCGI效率低)

我想建立一个运行在Mono上的持久应用服务器,它需要能够接受web请求并返回一些合适的响应。这是一项简单的任务,FastCGI的用途非常广泛,但我似乎找不到一个不与ASP.NET粘合在一起的FastCGI解决方案


更清楚的是:我对ASP.NET不感兴趣,也不想使用它或尝试加入ASP.NET堆栈的任何部分。我真正需要的是一种通过FastCGI与Web服务器接口的方法,其余的我都能解决。

也许你可以将FastCGI C库与Mono接口


另一种可能是使用该协议。该协议(某种程度上比FastCGI效率低)与FastCGI共享让持久应用程序为web服务器工作的能力。但是SCGI非常简单,因此编写自己的SCGI协议实现非常简单(假设您对HTTP有一定的了解)。

虽然Mono FastCGI实现总是与ASP.NET服务器打包在一起,但我编写的代码可以用于任何类型的服务器实现。下面是一个基本的例子,应该是可行的。特定于请求的代码进入
过程
方法,您可以通过
ResponderRequest.GetParameter
访问FastCGI环境变量

using Mono.FastCgi;

public class MyResponder : IResponder {

    RequestResponder req;

    public MyResponder(RequestResponder req) {
        req = request;
    }

    public int Process() {
        req.SendOutput("Content-Type: text/plain\r\n\r\n");
        req.SendOutput("Server name: ");
        req.SendOutput(req.GetParameter("SERVER_NAME");
        return 0;
    }

    public ResponderRequest Request {
        get {return req;}
    }


    public static void Main() {
        Socket socket = SocketFactory.CreatePipeSocket(IntPtr.Zero);
        //            = SocketFactory.CreateTcpSocket(address, port);
        //            = SocketFactory.CreateUnixSocket(path);

        Server server = new Server(socket);

        server.SetResponder(typeof (MyResponder));
        server.Start(false);
    }
}

要构建此示例,您可以从下载所有CS文件,只需排除任何不使用
Mono.FastCgi
命名空间的文件。

由于似乎没有任何好的FastCgi.NET库,我将尝试使用SimpleCGI并将此答案标记为已接受。干杯。布莱恩,谢谢你在这方面的出色工作!我有一个关于托管依赖静态变量的mono应用程序的相关问题,如果您有时间插话回答这个问题,我将不胜感激: