使用 Mono 和 Nginx 部署 ASP.NET Web API

使用 Mono 和 Nginx 部署 ASP.NET Web API

我已经尝试部署 Web API 一段时间了,但一直没有成功。无论我如何在配置中进行调整(根据 Google 搜索的建议),我仍然会遇到同样令人沮丧的错误:

System.Web.HttpException
at System.Web.StaticFileHandler.ProcessRequest (System.Web.HttpContext context) [0x00000] in <filename unknown>:0
at System.Web.DefaultHttpHandler.BeginProcessRequest (System.Web.HttpContext context, System.AsyncCallback callback, System.Object state) [0x00000] in <filename unknown>:0
at System.Web.HttpApplication+<Pipeline>c__Iterator1.MoveNext () [0x00000] in <filename unknown>:0
at System.Web.HttpApplication.Tick () [0x00000] in <filename unknown>:0

这在我的浏览器中显示为错误 404。

描述:HTTP 404。您正在寻找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写正确。

细节:请求的 URL:/MyAPI/Home/Index

我应该补充一点,使用 XSP4 通过 MonoDevelop 进行调试时它运行良好,这就是为什么我相信这是一个配置问题而不是代码问题。

我的 nginx 配置:

server {
    listen 80;
    root /var/www/MyAPI/;
    server_name MyAPI;

    location / {
        fastcgi_pass 127.0.0.1:9000;
        include /etc/nginx/fastcgi_params;
    }
}

我尝试过使用 webapp 文件并将其全部输入到命令行中。

<apps>
<web-application>
    <name>MyAPI</name>
    <vhost>*</vhost>
    <vport>80</vport>
    <vpath>/</vpath>
    <path>/var/www/MyAPI/</path>
</web-application>
</apps>

然后在命令行中我尝试过:

fastcgi-mono-server4 /applications=/MyAPI:/var/www/MyAPI/ socket=tcp:127.0.0.1:9000

fastcgi-mono-server4 --appconfigdir=/etc/webapps socket=tcp:127.0.0.1:9000

我在这里遗漏了什么?有人能解决这个问题吗?

答案1

事实证明,该问题是由于在发布 Web API 时使用了预编译选项而导致的。当我尝试在不使用预编译的情况下发布应用程序时,一切都运行顺利。

相关内容