【问题标题】:ASP.Net with nginx/Lighttpd/mono/fastcgi on Windows在 Windows 上使用 nginx/Lighttpd/mono/fastcgi 的 ASP.Net
【发布时间】:2023-05-19 09:11:01
【问题描述】:

为了满足 ASP.Net 应用程序的基本要求,我需要在 Windows 上运行 Web 服务器(nginx 或 lighttpd)。我正在尝试将 mono 2.10 中的 fastcgi-mono-server4 用于 windows,但没有任何运气。 我的 ASP.Net 应用程序只是一个带有要初始化的最小 global.asax 的 httpmodule,而且我使用自己的 mvc 框架,所以我需要的 asp 真的太少了。 我不提供任何特定的文件扩展名,所有请求都必须发送到模块处理程序。我正在尝试使用 Web 上的所有设置配置两台服务器,并使用所有可能的命令行配置 fastcgi-mono-server4,并且 fastcgi-mono-server4 似乎也可以工作,并且两个 Web 服务器也可以,但在最好的情况下我只是得到“没有为...定义应用程序”页面或 500 服务器错误,fastcgi 有时会显示“没有为 index.html 定义应用程序”或只是调试信息或根本没有(在不同的配置中)。 我只需要正确的 nginx/lighttpd 配置和 fastcgi 的正确命令行。 该应用程序可以在 mono 或 .net 框架上运行(它在 apache/mono 上运行没有问题),我不想在 windows 上使用 IIS。

提前致谢。

【问题讨论】:

  • 你能告诉我们你的 nginx 配置文件吗?
  • 这是nginx.conf 这是bat(在应用程序目录中运行) e:\Prog\Mono210\lib\mono\4.0\fastcgi-mono-server4.exe /socket=tcp :127.0.0.1:9000 /应用程序=/:/。感谢您的回复。

标签: windows nginx mono fastcgi lighttpd


【解决方案1】:

自从我使用 nginx 来托管我的 ASP.NET 应用程序以来已经有一段时间了,但是回头看看我的 nginx.conf 有几个不同之处。首先,我曾经将每个请求(无论扩展名如何)重定向到 fastcgi 套接字。此外,我的 Web 应用程序的根目录有一个 root 指令。这是我的 nginx.conf 的 location 部分:

    location / {
        root /home/whatever/Website/;
        fastcgi_pass 127.0.0.1:9000;
        include /etc/nginx/fastcgi_params;
    }

我真的不知道发送到 fastcgi 套接字的内容,但您可以尝试 root 指令,以及将所有内容重定向到它(有点像集成管道模型)。
另外,我的 fastcgi_params 的前两行以防万一:

fastcgi_param  PATH_INFO      "";
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

我将它与 Mono 2.10.8 一起使用,我的 ASP.NET MVC 3 网站运行良好。试试看,然后和我谈谈。

【讨论】:

  • 我仍然遇到很多错误。如果我的应用程序位于 e:\work\website\ (bin、全局 asax 等)中,“root”参数必须是什么?我尝试使用 e:\\work..、/work/ 等,但不确定在 Windows(不是 linux)中它必须如何。
  • 谢谢扎巴尼。最后“工作”(实际上它没有,但由于 vb.net 上的单声道限制,我得到一个 VBNC_CRASH。根似乎不是必需的,至少在我不需要服务器其他站点的情况下。问题出在启动 fastcgi-mono-server4 的 fasctcgi bat 中,其中以 E: 开头的参数导致了问题。我更改为 /applications=/:/..\work\website\ 并且可以工作。我试图运行.net 中的 fastcgi-mono-server4(无单声道)并且可以工作,但报告有关缺少程序集 fastcgi-mono-server4(!)的错误,并且通过单声道工作但不是 vb.net 运行
  • 很高兴知道这些东西。希望你能找到一些方法让事情顺利进行!
最近更新 更多