Search code examples
monoapache2centoscase-sensitivemod-mono

Mono IOMAP case sensitivity


Having some problems installing BlogEngine.NET onto my CentOS mod_mono 2.8 (mono 2.8.1) box.

The BlogEngine.NET code references a folder named 'Bin'. On looking at the contents of the directory, there is a folder called 'bin' - the normal place for the compiled source to reside.

Renaming the folder to 'Bin' is not an option, as this will cause mono problems (it requires the folder to be called 'bin').

I came accross this: http://www.mono-project.com/IOMap

Which suggests that IOMap in Mono will make mono 'ignore' case sensitivity.

I added MONO_IOMAP=all to my env, from su, and it appears when I call env However, this doesn't seem to work - it is still case sensitive.

I then added MonoSetEnv MONO_IOMAP=all to my apache vhosts file for a specific subdomain, and this still doesn't work.

Any ideas what I am doing wrong? Am I being blind and not adding MONO_IOMAP=all to env for any other users than root?


Update: My hosts.conf for this site looks like:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /home/host/www/host.net/blog
    ServerName blog.host.net
    ErrorLog /home/host/www/host.net/logs/blog.host.net-error.log
    TransferLog  /home/host/www/host.net/logs/blog.host.net-access.log
    CustomLog /home/host/www/host.net/logs/blog.host.net-access_combined.log combined

    DirectoryIndex index.html index.aspx

    MonoServerPath blog.host.net "/usr/local/bin/mod-mono-server2"
    MonoExecutablePath blog.host.net "/usr/local/bin/mono"
    MonoDebug blog.host.net true
    MonoSetEnv blog.host.net MONO_IOMAP=all
    MonoApplications blog.host.net "/:/home/host/www/host.net/blog"

    <Location "/">
            Allow from all
            Order allow,deny
            MonoSetServerAlias blog.host.net
            SetHandler mono
            SetOutputFilter DEFLATE
            SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip dont-vary
    </Location>
    <IfModule mod_deflate.c>
            AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript
    </IfModule>
</VirtualHost>

Solution

  • Try to set MonoSetEnv with server alias, for example my configuration of virtual host looks like this:

    DocumentRoot /var/www/my.domain.com/
    ServerName my.domain.com
    
    MonoServerPath mydomaincom /usr/local/bin/mod-mono-server4
    MonoSetEnv mydomaincom MONO_IOMAP=all
    AddMonoApplications mydomaincom "/:/var/www/my.domain.com/"
    
    <Location />
        Allow from all
        Order allow,deny
        MonoSetServerAlias mydomaincom
        SetHandler mono
        SetOutputFilter DEFLATE
        SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip dont-vary
    </Location>
    <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript
    </IfModule>