使用 fastcgi-mono-server4 的 WebResource.axd 出現 404 錯誤

使用 fastcgi-mono-server4 的 WebResource.axd 出現 404 錯誤

我有一個在 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;
    }
}

相關內容