404-Fehler für WebResource.axd mit fastcgi-mono-server4

404-Fehler für WebResource.axd mit fastcgi-mono-server4

Ich habe eine einfache ASP.NET WebForms-App, die ich unter Windows erstellt und auf einen Linux-Server (Ubuntu 14.04) kopiert habe, auf dem fastcgi-mono-server4 und nginx laufen. Die App läuft unter Windows einwandfrei, aber unter Mono kann sie das WebResource.axd?d=...Skript aufgrund eines 404-Fehlers nicht abrufen. Daher schlagen alle Postbacks fehl, weil WebForm_OnSubmit()nicht definiert ist.

Wenn ich meine ScriptManagerund alle Validierer von der Seite entferne, läuft es auf Mono einwandfrei, da WebResource.axdes nicht mehr benötigt wird. Ich möchte das jedoch nicht tun, da ich AJAX verwenden möchte.

Ich habe die Lösung indieser Beitrag, aber es hatte keine Wirkung. Ich habe auch versucht, dieses Tag zum system.webServer/handlersAbschnitt hinzuzufügen, aber das hat auch nicht funktioniert.

Ich habe auch versucht,Dieser Artikelum AJAX ohne ScriptManager zu verwenden. Unter Windows funktionierte es einwandfrei, aber unter Mono schlug es fehl, da ich bei allen meinen Webdienstanfragen einen 404-Fehler erhielt.

Meine Frage ist also: Warum erhalte ich beim Herunterladen einen 404-Fehler WebResource.axdund wie behebe ich ihn? Gibt es eine Mono- oder Nginx-Konfiguration, die ich korrigieren muss?

BEARBEITEN: hier ist meine Nginx-Konfiguration:

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

Antwort1

Ich habe die Antwort herausgefunden mitDieser Artikel. Im Grunde musste ich in meiner Nginx-Konfiguration einen speziellen Speicherort für die .axd-Dateien hinzufügen. Meine endgültige Konfiguration ist unten aufgeführt. Sie ermöglicht auch die Verwendung von Seitenmethoden.

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

verwandte Informationen