Назад | Перейти на главную страницу

Ошибка 404 для WebResource.axd с fastcgi-mono-server4

У меня есть простое приложение ASP.NET WebForms, которое я создал в Windows и скопировал на сервер Linux (Ubuntu 14.04), на котором работают fastcgi-mono-server4 и nginx. Приложение отлично работает в Windows, но при работе в моно не может получить WebResource.axd?d=... скрипт из-за ошибки 404. Таким образом, все обратные передачи терпят неудачу, потому что WebForm_OnSubmit() не определено.

Если я удалю свой ScriptManager и все валидаторы со страницы, он отлично работает в моно, потому что WebResource.axd больше не требуется. Однако я не хочу этого делать, потому что хочу использовать AJAX.

Я пробовал решение в эта почта, но это не повлияло. Я также попытался добавить этот тег в system.webServer/handlers раздел, но это тоже не сработало.

Я также пробовал следовать Эта статья использовать AJAX без ScriptManager. Он отлично работал в Windows, но не работал в моно, выдав мне ошибку 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;
    }
}

Я понял ответ, используя Эта статья. По сути, мне нужно было добавить специальное место для файлов .axd в мою конфигурацию nginx. Моя окончательная конфигурация приведена ниже; он также позволяет работать с методами страницы.

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;
    }
}