
我有一個在 Windows 中創建的簡單 ASP.NET WebForms 應用程序,並將其複製到運行 fastcgi-mono-server4 和 nginx 的 Linux 伺服器 (Ubuntu 14.04)。該應用程式在 Windows 上運作良好,但在 Mono 上運行時WebResource.axd?d=...
,由於 404 錯誤而無法取得腳本。因此,所有回發都會失敗,因為 WebForm_OnSubmit()
未定義。
如果我ScriptManager
從頁面中刪除我的驗證器和所有驗證器,它在單聲道上運作良好,因為WebResource.axd
不再需要。但是,我不想這樣做,因為我想使用 AJAX。
我嘗試了解決方案這個帖子,但沒有效果。我還嘗試將該標籤添加到該system.webServer/handlers
部分,但這也不起作用。
我也嘗試過以下本文在沒有 ScriptManager 的情況下使用 AJAX。它在 Windows 上運行良好,但在 Mono 上失敗,為我的所有 Web 服務請求提供了 404 錯誤。
所以我的問題是:為什麼我在嘗試下載時收到 404 錯誤WebResource.axd
,如何修復它?我需要修復一些 mono 或 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;
}
}
答案1
我用以下方法找到了答案本文。基本上,我需要在 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;
}
}