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 では問題なく動作しますが、mono で実行するとWebResource.axd?d=...404 エラーのためスクリプトを取得できません。そのため、が未定義のためすべてのポストバックが失敗します WebForm_OnSubmit()

ScriptManagerページから自分のバリデーターとすべてのバリデーターを削除すると、WebResource.axdは不要になるため、mono で正常に実行されます。ただし、AJAX を使用したいので、その方法は使いたくありません。

私は解決策を試しましたこの郵便受け、効果はありませんでした。セクションにそのタグを追加してみましたsystem.webServer/handlersが、それでも機能しませんでした。

私も試してみましたこの記事ScriptManager なしで AJAX を使用する。Windows では問題なく動作しましたが、Mono ではすべての Web サービス リクエストに対して 404 エラーが発生して失敗しました。

質問は、ダウンロードしようとすると 404 エラーが発生するのはなぜですかWebResource.axd? また、どうすれば修正できますか? mono または 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;
    }
}

関連情報