У меня есть простое приложение 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;
}
}