Nginx

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

  • December 4, 2015

很長一段時間以來,我一直在嘗試部署我的 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

我在這裡想念什麼?有人對此有解決方案嗎?

事實證明,該問題是由在發布 Web API 時使用 Precompile 選項引起的。當我嘗試在不使用 Precompile 的情況下發布應用程序時,一切執行順利。

引用自:https://serverfault.com/questions/739743