
Tengo una aplicación ASP.NET WebForms simple que creé en Windows y copié en un servidor Linux (Ubuntu 14.04) que ejecuta fastcgi-mono-server4 y nginx. La aplicación funciona bien en Windows, pero cuando se ejecuta en mono no puede obtener el WebResource.axd?d=...
script debido a un error 404. Como tal, todas las devoluciones de datos fallan porque WebForm_OnSubmit()
no están definidas.
Si elimino mi ScriptManager
y todos los validadores de la página, funciona bien en mono porque WebResource.axd
ya no es necesario. Sin embargo, no quiero hacer eso porque quiero usar AJAX.
Probé la solución enesta publicación, pero no tuvo ningún efecto. También intenté agregar esa etiqueta a la system.webServer/handlers
sección, pero tampoco funcionó.
También intenté seguirEste artículoutilizar AJAX sin un ScriptManager. Funcionó bien en Windows, pero falló en mono al darme un error 404 para todas mis solicitudes de servicios web.
Entonces mi pregunta es: ¿por qué aparece un error 404 al intentar descargar WebResource.axd
y cómo lo soluciono? ¿Hay alguna configuración mono o nginx que deba arreglar?
EDITAR: aquí está mi configuración de 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;
}
}
Respuesta1
Descubrí la respuesta usandoEste artículo. Básicamente, necesitaba agregar una ubicación especial para los archivos .axd en mi configuración de nginx. Mi configuración final está a continuación; también permite que funcionen los métodos de página.
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;
}
}