Назад | Перейти на главную страницу

Mono 3.0 не перехватывает запросы на Apache2 / CentOS

У меня есть Mono 3.0.6, работающий на установке CentOS 6 / Apache 2. Я опубликовал на сервере веб-сайт ASP.NET 4.5 / MVC4. Однако, когда я пытаюсь перейти на веб-сайт, я получаю код состояния 503 (Служба временно недоступна), и в журналах я вижу, что Mono даже не пытается перехватить запрос (поскольку он должен попытаться перенаправить меня из / в / Домой/):

[Tue Mar 26 14:18:38 2013] [error] [client 192.168.40.1] Directory index forbidden by Options directive: /var/www/mvcgui/wwwroot/

Я использую конфигурацию Apache по умолчанию и скопировал mod_mono.conf в /etc/httpd/conf.d/00-mod_mono.conf. Мой VHOST находится в том же каталоге, что и 01-mvcgui.conf (чтобы убедиться, что он загружается после Mono). Это мой vhost:

<VirtualHost _default_:80>
        ServerAdmin webmaster@example.com
        DocumentRoot /var/www/mvcgui/wwwroot
        ServerName 192.168.40.132
        ErrorLog /var/www/mvcgui/error.log
        CustomLog /var/www/mvcgui/requests.log combined

        ## Mono-specific configuration ##
        MonoServerPath mvcgui "/opt/mono/bin/mod-mono-server4"
        MonoDebug mvcgui true
        MonoSetEnv mvcgui MONO_IOMAP=all
        MonoApplications mvcgui "/:/var/www/mvcgui/wwwroot"
        ## End Mono-specific configuration
        <Location />
        MonoSetServerAlias mvcgui
        SetHandler mono
        </Location>
</VirtualHost>

Я подозреваю, что запросы не передаются в Mono. Как я мог убедиться в этом?

Конечно, через 1 день, потраченный на это, я нашел решение через 5 минут после публикации здесь. Думал поделиться результатом. Для ASP.NET 4.5 / MVC4 вам необходимо изменить путь, по которому mod-mono-server4 получает файл lib.

Отредактируйте файл:

vi /opt/mono/bin/mod-mono-server4

И в нем измените эту строку:

    exec /opt/mono/bin/mono $MONO_OPTIONS "/opt/mono/lib/mono/**4.0**/mod-mono-server4.exe" "$@"

С этим:

    exec /opt/mono/bin/mono $MONO_OPTIONS "/opt/mono/lib/mono/**4.5**/mod-mono-server4.exe" "$@"

Я подозреваю, что Mono не «перехватывает» запросы, потому что сервер не запускается должным образом из-за проблемы с путем к библиотеке. Теперь я получаю страницы .NET, как и ожидалось.