https://bugzilla.novell.com/show_bug.cgi?id=679598
https://bugzilla.novell.com/show_bug.cgi?id=679598#c0 Summary: Apache+mod_mono, xsp or MonoFastCGI does not obey the <httpHandlers/><add path="anypathhereisbuggy" /> Classification: Mono Product: Mono: Class Libraries Version: 2.8.x Platform: Other OS/Version: RHEL 5 Status: NEW Severity: Major Priority: P5 - None Component: Sys.Web AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.127 Safari/534.16 Basically after numerous integration tests the only path that works reliably is the wildcard path <add path="*" />. Where all requests are passed to the target handler. I've found any other path to have some issues and does not behave as it does in ASP.NET hosts on windows. I've assembled a number of 'lightweight starter projects' with different configurations that are subject to a series of integration tests. The full source code for the 'starter projects' that are being tested are available at: https://github.com/ServiceStack/ServiceStack.Examples/tree/master/src/StarterTemplates The full source code for the integration tests that generated the reports below is available at: https://github.com/ServiceStack/ServiceStack/blob/master/tests/MasterHost/ReportTests.cs Here is the integration test report results for CentOS running on Nginx/FastGGI, Apache+mod_mono, xsp2/xsp4 and ConsoleAppHost: http://www.servicestack.net/testreports/2011-03-17_RunReports-Linux.htm for comparison here are the equivalent windows benchmarks: http://www.servicestack.net/testreports/2011-03-09_RunReports-Windows.htm Summary: The Web.Config's used in the started project is the result of the most consistent experience I could find across Windows/.NET and Linux/MONO platforms running as-is without any code or binary changes (my goal). Problems: 1) The major bug that occurs in all MONO ASP.NET hosts using a custom handler (e.g. /api) is that if the virtual host / application path (i.e. /CustomPath/api ) does not start with the same name as registered <httpHandler /><add path="api*"/> then for some strange reason (i.e. as these 2 configurations shouldn't be related), it fails to pass nested paths more than 1 level deep, e.g: http://servicestack.net/CustomPath40/api/hello - works http://servicestack.net/CustomPath40/api/hello/world - does not work http://servicestack.net/CustomPath40/api/hello/world/1/2/3 - neither does any nested part from here on in By contrast if the virtual path started with the same name e.g. /ApiPath35 and a <httpHandler/> of 'api*' then all requests below work as expected: http://www.servicestack.net/ApiPath35/api/hello http://www.servicestack.net/ApiPath35/api/hello/world http://www.servicestack.net/ApiPath35/api/hello/world/1/2/3 2) It is hard to configure a default document for '/' without it being automatically added to the request url and have it still be passed to the registered handler. Ideally I would like /default.htm to be handled by Nginx or Apache if it exists otherwise '/' gets passed to the <httpHandler /> Reproducible: Always Steps to Reproduce: 1. Eh, run the integration tests or call the urls: http://servicestack.net/ApiPath35/api/ - is running Nginx/FastCGI http://api.servicestack.net/ApiPath35/api/ - anything in the api.* sub domain is running Apache+mod_mono My Apache conf looks like this: LoadModule mono_module /usr/lib/httpd/modules/mod_mono.so <VirtualHost *:80> ServerName api.servicestack.net HostnameLookups Off UseCanonicalName On MonoPath default /opt/mono MonoServerPath default /opt/mono/bin/mod-mono-server2 AddMonoApplications default "/ApiPath35:/home/mythz/src/ServiceStack.Examples/src/StarterTemplates/ApiPath35" <Location /ApiPath35> MonoSetServerAlias default SetHandler mono </Location> .. Actual Results: 404s mostly as a result of the request not being passed to the registered <httpHandler /> Expected Results: 200 OK, which happens if the request makes it through to the <httpHandler /> There are many differences in how Windows ASP.NET and MONO ASP.NET handles the <httpHandler /><add path="*"/> that are inconsistent across win/linux platforms. i.e. ASP.NET doesn't need a wild card e.g. path="api" will allow all /api/requests/from/here to get passed through to the httpHandler. At best MONO requires path="api*" and a strict matching of virtual path / app name with the registered handler. Feel free to email me on [email protected] for any clarifications of this bug. -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
