Thanks for this. Seems like only the fluent config seems to work, I would much rather have it in config but I can live with with this.
The weird output-behaviour was caused by an OutputCacheModule that was loaded. Not sure where it comes from, but I think it's part of .NET. It doesn't seem to understand rewriting in the fact that passed on parameters to my controller differs between requests. Reviewing the tracelog, a request made through /images/1/mini.jpg gives this in the log: <failedRequest url="http://protomanager.localhost/Resource/image.castle" but /resource/image.rails?size=mini&id=1 gives this: <failedRequest url="http://protomanager.localhost:80/resource/image.rails?size=mini&imageid=1" I guess the outputcache have no idea of knowing that it's a different URL, hence caching the successful request for all image-requests. I don't know what impact this will have on performance since I'm in a dev-enviroment, but this might be something for people to look into? I believe this is a drawback in the routing-engine. Mike Nichols wrote: > Jimmy > Here's my relevant web.config bits for IIS7...you can probably > disregard the aspx and ashx entries. This presumes an separate site > handling static resources : > <system.webServer> > <modules> > <!--do not clear--> > <remove name="ScriptModule"/> > <add name="routingEx" > type="Castle.MonoRail.Framework.Routing.RoutingModuleEx,Castle.MonoRail.Framework" > preCondition="managedHandler"/> > <add name="PerRequestLifestyle" > type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule,Castle.MicroKernel" > preCondition="managedHandler"/> > <add name="ScriptModule" preCondition="managedHandler" > type="System.Web.Handlers.ScriptModule, System.Web.Extensions, > Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></ > modules> > <handlers accessPolicy="Script, Execute, Read"> > <clear/> > <add name="ASPX" path="*.aspx" verb="*" > type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" > preCondition="integratedMode"/> > <add name="AssemblyResourceLoader-Integrated" > path="WebResource.axd" verb="*" > type="System.Web.Handlers.AssemblyResourceLoader" > resourceType="Unspecified" requireAccess="Read" > preCondition="integratedMode"/> > <add name="Block-Boo" path="*.boo" verb="*" > type="System.Web.HttpForbiddenHandler, System.Web" > modules="ManagedPipelineHandler" scriptProcessor="" > resourceType="Unspecified" requireAccess="Script" > preCondition="integratedMode,runtimeVersionv2.0"/> > <add name="Block-Brail-JS" path="*.brailjs" verb="*" > type="System.Web.HttpForbiddenHandler, System.Web" > modules="ManagedPipelineHandler" scriptProcessor="" > resourceType="Unspecified" requireAccess="Script" > preCondition="integratedMode,runtimeVersionv2.0"/> > <add name="Block-Brail" path="*.brail" verb="*" > type="System.Web.HttpForbiddenHandler, System.Web" > modules="ManagedPipelineHandler" scriptProcessor="" > resourceType="Unspecified" requireAccess="Script" > preCondition="integratedMode,runtimeVersionv2.0"/> > <add name="Monorail-All" path="*" verb="*" > type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, > Castle.MonoRail.Framework" modules="ManagedPipelineHandler" > scriptProcessor="" resourceType="Unspecified" requireAccess="Script" > preCondition=""/> > <add name="ScriptHandlerFactory" verb="*" path="*.asmx" > preCondition="integratedMode" > type="System.Web.Script.Services.ScriptHandlerFactory, > System.Web.Extensions, Version=3.5.0.0, Culture=neutral, > PublicKeyToken=31BF3856AD364E35"/> > <add name="ScriptHandlerFactoryAppServices" verb="*" > path="*_AppService.axd" preCondition="integratedMode" > type="System.Web.Script.Services.ScriptHandlerFactory, > System.Web.Extensions, Version=3.5.0.0, Culture=neutral, > PublicKeyToken=31BF3856AD364E35"/> > <add name="ScriptResource" verb="GET,HEAD" > path="ScriptResource.axd" preCondition="integratedMode" > type="System.Web.Handlers.ScriptResourceHandler, > System.Web.Extensions, Version=3.5.0.0, Culture=neutral, > PublicKeyToken=31BF3856AD364E35"/></handlers> > <validation validateIntegratedModeConfiguration="false"/> > </system.webServer> > > When using the RoutingModuleEx you'll probably use the fluent config > in c#. I have all my rules in a RoutingService that gets initialized > just after Application_Start. > Not sure what's causing your other issue. Are you pulling the image in > thru an xhr or regular request? > > On Oct 22, 8:45 am, Jimmy Shimizu <[EMAIL PROTECTED]> wrote: > >> Okay, I have somewhat solved it now. Seems like the new routing-engine >> doesn't even bother with web.config rules, if I did them in >> GlobalApplication it worked. >> public override void Application_OnStart() { >> var rule = new PatternRoute("images", "/images/<id>/<size>.jpg") >> >> .DefaultForController().Is<ResourceController>().DefaultForAction().Is("image") >> .Restrict("id").ValidInteger; >> >> RoutingModuleEx.Engine.Add(rule); >> >> } >> >> Now it works, but the odd thing is... that after an app-restart, it >> works, sort of. invalid ids will throw an exception and handled by my >> rescue. But once I make a successful load of an image, all other >> requests will get the same image. Explanation: >> >> /images/1/mini.jpg <-- works >> >> /images/100/big.jpg <-- gives the same image. Should call the rescue. >> >> images/1/big.jpg <-- same image, should render a big image. >> >> Looking through my logs, I can see that it actually invokes Image() in >> my ResourceController the frist time, but not anymore after the initial >> request. >> >> Although, the request goes through BeginRequest, AuthenticateRequest and >> EndRequest atleast. Is there any weird caching per controller that >> doesn't really get that I pass on other querystring-arguments to the >> controller with the rewriting? >> >> Jimmy Shimizu wrote: >> >>> Hi, I'm trying to get the routing working on an IIS7 setup but I'm not >>> sure if there is IIS7 that gives me problem or if I'm doing something wrong. >>> >>> This is my setup: >>> >>> <system.webServer> >>> <modules> >>> <add name="routingEx" >>> type="Castle.MonoRail.Framework.Routing.RoutingModuleEx,Castle.MonoRail.Framework" >>> preCondition="managedHandler" /> >>> </modules> >>> <handlers> >>> <clear /> >>> <add name="MonoRail" path="*" verb="*" >>> type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, >>> Castle.MonoRail.Framework" preCondition="integratedMode" /> >>> <add name="vm" verb="*" path="*.vm" >>> type="System.Web.HttpForbiddenHandler" preCondition="integratedMode" /> >>> <add name="boo" verb="*" path="*.boo" >>> type="System.Web.HttpForbiddenHandler" preCondition="integratedMode" /> >>> <add name="st" verb="*" path="*.st" >>> type="System.Web.HttpForbiddenHandler" preCondition="integratedMode" /> >>> </handlers> >>> <validation validateIntegratedModeConfiguration="false" /> >>> </system.webServer> >>> >>> And in my <monorail> I have: >>> >>> <routing> >>> <rule> >>> <pattern>/images/(\d+)/(\w+)\.jpg$</pattern> >>> <replace><![CDATA[ >>> /resource/image.rails?size=$2&imageID=$1 ]]></replace> >>> </rule> >>> </routing> >>> >>> Basically, what I want to do is replace /images/1/small.jpg to >>> /resource/image.rails?imageID=1&size=small >>> >>> However, it doesn't seem to kick in, since I get >>> >>> //Controller not found. Area: 'images' Controller Name: '1' >>> >>> //I've read that IIS7 and integrated mode gives you trouble with the >>> routing, but never any solution to the problem or any real explanation >>> to why that is. I'm a little dazzled about how .NET actually know about >>> IEngineContext since I don't specify that anywhere in my Web.config, all >>> I have is the handler that maps to MonoRailHttpHandlerFactory. Is that >>> the issue, that the Routing doesn't kick in before the handler? >>> >>> And I haven't seen any way to get useful debugdata regarding the routing...? >>> >>> When people give example where they configure the routing in code, where >>> do they do that? Application_OnStart? How do they access RoutingEngineEx >>> in that case? >>> > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en -~----------~----~----~----~------~----~------~--~---
