
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 ScriptManager
und alle Validierer von der Seite entferne, läuft es auf Mono einwandfrei, da WebResource.axd
es 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/handlers
Abschnitt 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.axd
und 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;
}
}