
Windows에서 만들고 fastcgi-mono-server4 및 nginx를 실행하는 Linux 서버(Ubuntu 14.04)에 복사한 간단한 ASP.NET WebForms 앱이 있습니다. 앱은 Windows에서는 잘 실행되지만 모노에서 실행하면 WebResource.axd?d=...
404 오류로 인해 스크립트를 가져오지 못합니다 . 따라서 WebForm_OnSubmit()
정의되지 않았기 때문에 모든 포스트백이 실패합니다.
ScriptManager
페이지에서 내 유효성 검사기와 모든 유효성 검사기를 제거하면 WebResource.axd
더 이상 필요하지 않기 때문에 모노에서 제대로 실행됩니다. 하지만 AJAX를 사용하고 싶어서 그렇게 하고 싶지는 않습니다.
나는 해결책을 시도했다.이 게시물, 그러나 효과가 없었습니다. 또한 해당 태그를 섹션에 추가하려고 시도했지만 system.webServer/handlers
역시 작동하지 않았습니다.
나는 또한 다음을 시도했다이 기사ScriptManager 없이 AJAX를 사용하려면 Windows에서는 잘 작동했지만 모든 웹 서비스 요청에 대해 404 오류가 발생하여 모노에서는 실패했습니다.
제 질문은: 다운로드하려고 할 때 왜 404 오류가 발생하며 WebResource.axd
어떻게 해결합니까? 수정해야 할 모노 또는 nginx 구성이 있습니까?
편집: 여기 내 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;
}
}
답변1
나는 다음을 사용하여 답을 알아 냈습니다.이 기사. 기본적으로 nginx 구성에 .axd 파일에 대한 특별한 위치를 추가해야 했습니다. 내 최종 구성은 다음과 같습니다. 또한 페이지 메소드가 작동하도록 허용합니다.
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;
}
}