I'm having a series of odd issues with System.Web.Routing. I'm manually adding routes -- this isn't MVC.
First problem is that routing doesn't work at all unless I create a .htaccess file in the root with "ForceType application/x-asp-net". I tried setting the handler in the apache.conf but that didn't work. In fact, that broke the .htaccess hack. There are lots of conflicting docs on this. (Also vhosts containing mod_mono parameters are broken under CentOS due to a security/startup order issue -- there's an old bug there.) Any clues? Second: on Mono 2.6.7 if I create a route "test" I can access it as "test" and "test/". But under Mono, the second path isn't recognized. If I copy Microsoft's System.Web.Routing to the server, the behavior matches, so I don't believe Apache/mod_mono/xsp is tinkering with the path resolution. After spending quite a bit of time sorting out Makefile weirdness that stumped every blog post and stackoverflow article I could find (https://bugzilla.novell.com/show_bug.cgi?id=645212) I successfully moved forward to Mono 2.8.2 to see if anything changed. On Mono 2.8.2 the trailing slash issue appears resolved. I can remove the local copy of Microsoft System.Web.Routing and everything works. However if I bump to the .NET 4.0 profile, the issue returns. Under 4.0 System.Web.Routing is an empty assembly. Did an older file get pulled into System.Web? Did some MVC fix break the interaction with the base class? The whole MVC/Routing thing seems shaky on Mono right now. Now for the strange one: While testing, many times I managed to get myself into a situation where routes stopped working altogether. I finally discovered stuff left in the /tmp directory. (Shutdown is clean, you can reproduce this every time.) That should get cleaned up when mod_mono exits as it seems to cause chaos if you switch .NET profiles or delete routes or change Global.asax between versions, even if you kill the mono process and/or restart Apache. In some cases, I even managed to get pages from different sites on the same server while testing. This is, predictably, hard to reproduce but hopefully this is enough of a report to track it down. (See note on MonoSetServerAlias below.) Finally, and this may be related -- how are those cache/init keys in /tmp determined? Is it robust? I have multiple vhosts pointing to the same files -- think SSL and non-SSL versions -- and, well, strange things happen. I tried symlinks and even copying the files separately and it didn't help. Is it pulling the build version or something? The bug: I have a "status" route pointing to www/html/site/Status.Aspx mapped to two sites (same code, same directory even): http://server.com/status -- works http://server.com:443/status -- fails with a 404 I can restart Apache and the behavior persists. But if I delete the tmp directory, I can reverse it: http://server.com:443/status -- now works http://server.com/status -- worked before, now fails with 404 Basically the first site wins. I've explored MonoSetServerAlias and things that seem related. Usually this just opens a larger can of worms. Conflicting documentation for fastcgi vs mod_mono, long-standing unresolved bugs that smell vaguely similar, and so forth. Anyway, some clues would be appreciated. I feel like I've done due diligence chasing my tail on this one. :) _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
