0

lighttpd と fastcgi-mono-server2 を実行している ubuntu サーバーに Web サービスをデプロイしました。.asmx ページは正しく読み込まれますが、メソッドをテストすると 404 が返されます。

私の Web サービスは Import.asmx と呼ばれ、私のメソッドは download と呼ばれ、404 が戻ってきて import.asmx/download が存在しないことを示します

xsp2を使用すると、同じサービスが完全に機能します

/download が lighttpd/fastcgi によって提供される方法と関係があると思いますが、修正方法がわかりません。

4

2 に答える 2

0

私はまったく同じ問題を抱えていました。アセットが見つからない場合に 404 を提供するためのデフォルト ディレクティブであることが判明しました。次の行を削除しました。

try_files $uri $uri/ =404;

PATH_INFO/etc/nginx/fastcgi_params に fastcgi パラメータとして追加します。

fastcgi_param  PATH_INFO        $fastcgi_path_info;

それは私のためにそれを修正しました。それが役に立てば幸い。

于 2015-03-09T22:55:17.833 に答える
0

404 エラーは解決しましたが、現在は 500 になっています。

実際には、すべての MyService.asmx/SomeMethod ポスト呼び出しでこのエラーが発生していました。解決策 [実際にはありません] 私はそれを理解しました:

location ~ \.(aspx|asmx|ashx|asmx\/(.*)|asax|ascx|soap|rem|axd|cs|config|dll)$ {
        fastcgi_pass   127.0.0.1:9001;
        index index.html index.htm default.aspx Default.aspx;
        fastcgi_index Default.aspx;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        /etc/nginx/fastcgi_params;
    }

asmxのみからasmx/( )* に変更しました。404 ではなく 500: System.Web.HttpException: ファイル '/Services/MyService.asmx/MyMethod' にアクセスするときにメソッド 'POST' は許可されません。

この調査結果は、nginx がこの種の要求を適切に処理していないといういくつかの手がかりを与えてくれます。ほぼ2時間グーグルで調べた後、解決策を見つけました:

location ~ \.asmx(.*) {
             fastcgi_split_path_info ^(.+\.asmx)(.*)$;
             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
             fastcgi_param PATH_INFO $fastcgi_path_info;
             fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
             include /etc/nginx/fastcgi_params;
             fastcgi_index Default.aspx;
             fastcgi_pass 127.0.0.1:9001;
     }

私はそれから遠く離れていませんでした。現在の場所の前にこの場所のルールを追加するだけで、正常に機能します。

于 2011-11-15T03:33:01.420 に答える