fastcgi-mono-server4를 사용하는 WebResource.axd에 대한 404 오류

fastcgi-mono-server4를 사용하는 WebResource.axd에 대한 404 오류

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

관련 정보