Ubuntu
使用 fastcgi-mono-server4 的 WebResource.axd 出現 404 錯誤
我有一個簡單的 ASP.NET WebForms 應用程序,我在 Windows 中創建並複製到執行 fastcgi-mono-server4 和 nginx 的 Linux 伺服器(Ubuntu 14.04)。該應用程序在 Windows 上執行良好,但在單聲道上執行時,
WebResource.axd?d=...
由於 404 錯誤而無法獲取腳本。因此,所有回發都失敗,因為WebForm_OnSubmit()
未定義。如果我從頁面中刪除我
ScriptManager
和所有驗證器,它在單聲道上執行良好,因為WebResource.axd
不再需要。但是,我不想這樣做,因為我想使用 AJAX。我嘗試了這篇文章中的解決方案,但沒有效果。我也嘗試將該標籤添加到該
system.webServer/handlers
部分,但這也不起作用。我還嘗試按照這篇文章在沒有 ScriptManager 的情況下使用 AJAX。它在 Windows 上執行良好,但在單聲道中失敗,因為我的所有 Web 服務請求都出現 404 錯誤。
所以我的問題是:為什麼我在嘗試下載時會收到 404 錯誤
WebResource.axd
,我該如何解決?我需要修復一些單聲道或 nginx 配置嗎?編輯:這是我的 nginx 配置:
server { listen 80; server_name www.example.com; access_log /var/log/nginx/example.access.log main; location / { root /var/www/www.example.com; index Default.aspx; try_files $uri $uri/ /Default.aspx; fastcgi_index Default.aspx; fastcgi_pass 127.0.0.1:9000; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO ""; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
我用這篇文章找到了答案。基本上,我需要在我的 nginx 配置中為 .axd 文件添加一個特殊位置。我的最終配置如下;它還允許頁面方法工作。
server { listen 80; server_name www.example.com; access_log /var/log/nginx/www.example.access.log; location ~\.(aspx|axd)(.*) { include fastcgi_params; fastcgi_split_path_info ^(.+.aspx)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index Default.aspx; fastcgi_pass 127.0.0.1:9000; } location / { root /var/www/www.example.com; index Default.aspx; try_files $uri $uri/ $uri.aspx /Default.aspx; fastcgi_index Default.aspx; fastcgi_pass 127.0.0.1:9000; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO ""; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }