
Eu tenho um aplicativo ASP.NET WebForms simples que criei no Windows e copiei para um servidor Linux (Ubuntu 14.04) que está executando fastcgi-mono-server4 e nginx. O aplicativo funciona bem no Windows, mas quando executado em mono, ele não consegue obter o WebResource.axd?d=...
script devido a um erro 404. Como tal, todos os postbacks falham porque WebForm_OnSubmit()
são indefinidos.
Se eu remover meu ScriptManager
e todos os validadores da página, ele funcionará bem em mono porque WebResource.axd
não será mais necessário. No entanto, não quero fazer isso porque quero usar AJAX.
Eu tentei a solução emesta postagem, mas não teve efeito. Também tentei adicionar essa tag à system.webServer/handlers
seção, mas também não funcionou.
Eu também tentei seguirEste artigousar AJAX sem um ScriptManager. Funcionou bem no Windows, mas falhou em mono, gerando um erro 404 para todas as minhas solicitações de serviço da web.
Então, minha pergunta é: por que recebo um erro 404 ao tentar fazer download WebResource.axd
e como faço para corrigir isso? Existe alguma configuração mono ou nginx que preciso corrigir?
EDIT: aqui está minha configuração do 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;
}
}
Responder1
Eu descobri a resposta usandoEste artigo. Basicamente, eu precisava adicionar um local especial para os arquivos .axd na minha configuração do nginx. Minha configuração final está abaixo; também permite que os métodos de página funcionem.
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;
}
}