Erro 404 para WebResource.axd com fastcgi-mono-server4

Erro 404 para WebResource.axd com fastcgi-mono-server4

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 ScriptManagere todos os validadores da página, ele funcionará bem em mono porque WebResource.axdnã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/handlersseçã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.axde 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;
    }
}

informação relacionada