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