Mono 3.0 未拦截 Apache2/CentOS 上的请求

Mono 3.0 未拦截 Apache2/CentOS 上的请求

我在 CentOS 6/Apache 2 设置上启动并运行了 Mono 3.0.6。我在服务器上发布了一个 ASP.NET 4.5/MVC4 网站。但是,当我尝试访问该网站时,我收到状态代码 503(服务暂时不可用),并且在日志中我可以看到 Mono 甚至没有尝试捕获请求(因为它应该尝试将我从 / 路由到 /Home/):

[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 [email protected]
        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 获取库的路径。

编辑文件:

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 页面。

相关内容