используя .asmx используя lighttpd и моно fastcgi - PullRequest
0 голосов
/ 30 сентября 2011

Я развернул веб-сервис на сервере Ubuntu, на котором запущены lighttpd и fastcgi-mono-server2. Страница .asmx загружается правильно, но когда я тестирую метод, я получаю 404.

Мой веб-сервис называется Import.asmx, а мой метод называется загрузкой, и 404 возвращается, говоря, что import.asmx / download не существует

При использовании xsp2 тот же сервис работает отлично

Я предполагаю, что это как-то связано с тем, как / download обслуживается lighttpd / fastcgi, но не может решить, как это исправить.

Ответы [ 2 ]

0 голосов
/ 10 марта 2015

У меня была та же проблема.Оказалось, директива по умолчанию для обслуживания 404, когда не найти активы.Удалил следующую строку:

try_files $uri $uri/ =404;

И добавил PATH_INFO в качестве параметра fastcgi в / etc / nginx / fastcgi_params:

fastcgi_param  PATH_INFO        $fastcgi_path_info;

Это исправило это для меняНадеюсь, это поможет.

0 голосов
/ 15 ноября 2011

Устранена ошибка 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: метод 'POST' не разрешен при доступе к файлу '/Services/MyService.asmx/MyMethod'.

Эти выводы дают мне некоторые подсказки, что nginx donНе правильно обрабатывать такого рода запросы.После почти 2 часов поиска в Google я нашел решение :

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

Я был недалеко от него.Просто добавьте это правило местоположения до того, как оно у вас будет, и оно отлично работает.

...