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

我一直试图部署我的Web API很长一段时间,现在没有成功。 无论我如何在自己的configuration中(通过Googlesearch的推荐)抛出东西,我仍然遇到了同样令人沮丧的错误:

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进行MonoDevelopdebugging时它运行良好,这就是为什么我认为这是configuration问题而不是代码问题。

我的nginxconfiguration:

 server { listen 80; root /var/www/MyAPI/; server_name MyAPI; location / { fastcgi_pass 127.0.0.1:9000; include /etc/nginx/fastcgi_params; } } 

我已经尝试使用一个webapp文件,只是在命令行中input。

 <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 

我在这里错过了什么? 有没有人有这个解决scheme?

事实certificate,这个问题是由于在发布Web API时使用预编译选项造成的。 当我尝试发布应用程序而不使用预编译时,一切都顺利进行。