使用 fastcgi-mono-server4 时 WebResource.axd 出现 404 错误

使用 fastcgi-mono-server4 时 WebResource.axd 出现 404 错误

我有一个简单的 ASP.NET WebForms 应用程序,它是在 Windows 中创建的,并复制到运行 fastcgi-mono-server4 和 nginx 的 Linux 服务器 (Ubuntu 14.04)。该应用程序在 Windows 上运行良好,但在 Mono 上运行时,WebResource.axd?d=...由于 404 错误而无法获取脚本。因此,所有回发都会失败,因为 WebForm_OnSubmit()未定义。

如果我ScriptManager从页面中删除我的和所有验证器,它就可以在 Mono 上正常运行,因为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;
    }
}

相关内容