Nginx
使用 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
我在這裡想念什麼?有人對此有解決方案嗎?
事實證明,該問題是由在發布 Web API 時使用 Precompile 選項引起的。當我嘗試在不使用 Precompile 的情況下發布應用程序時,一切執行順利。