April 2008 Entries

As part of the launch of Interakting, the pan-european web agency brand of Business & Decision, the E-Business blogs have been reskinned. The blog engine we use is built on SubText, a great little .NET blog engine. Not the easiest to skin, but manageable.

Have a browse around. It's the same guys blogging the same great stuff - just a little less blue/grey and a bit more pink :)

 


Bookmark with :
Digg It! DZone StumbleUpon Technorati Reddit Del.icio.us Newsvine Furl Blinklist

The company I work for, Business & Decision, is launching a new brand for their global digital agency function; "Interakting". Apparently "Business & Decision" works better as a brand in their other areas (Business Intelligence, Customer Intelligence and Management Consulting) than it does in E-Business. No shock there then :)

It's not officially launched in the UK yet, but you can get a sneak peek of our branding at our shiny new Interakting UK website.

The site was built in our Interakting office here in Oxford, and is running on EPiServer 5. Any feedback let me know and I'll get them through to the team. You may also recognise the tag cloud - it's CloudCuckoo - and we've put it in a little wrapper to make tagging only available to site editors!


Bookmark with :
Digg It! DZone StumbleUpon Technorati Reddit Del.icio.us Newsvine Furl Blinklist

My flight is booked and I'm looking forward to the summit! The agenda looks packed and I'm especially interested to see what is put on the developer second day 'stream'. At the moment it's just TBA... although there's plenty of other tasty tidbits on the other days too (like the MOSS/EPiServer slot with Mats Hellström).

I'm flying out on the early doors SAS flight from Heathrow on the 29th. If there's any other UK partners out there on the same flight, give me a shout and maybe we can link up on our way.


Bookmark with :
Digg It! DZone StumbleUpon Technorati Reddit Del.icio.us Newsvine Furl Blinklist

Whilst building the CloudCuckoo module, I used a neat trick to register my custom VPP on-the-fly by using an attribute flag to mark it as an EPiServer plugin. This would cause EPiServer to find it and intialise it when I first hit the EPiServer site. This worked fine on my machine and some others, but I was finding that on one specific machine it wasn't firing properly. EPiServer was calling it to initialise it, but the problem was when I tried to access the HttpContext. In a nutshell, for some reason when this machine fired up the plugin to initialise it, it was losing or not passing in the HTTP context. Typically, this would happen if there was a funny AppDomain issue or if something was being recycled, but all the configuration looked fine. The code causing the problem is below:

   1: if (HttpContext.Current == null)
   2: {
   3:     // Running from the scheduler, skip registration
   4:  
   5:     System.Diagnostics.Debug.Write("VppInitializer called without HttpContext. Exiting");
   6:  
   7:     return;
   8:  
   9: }
  10:  
  11: // Register
  12:  
  13: Assembly lateBoundAssembly = System.Reflection.Assembly.LoadFrom(HttpContext.Current.Server.MapPath(@"\bin\BusinessDecision.CloudCuckoo.dll"));

When I ran DebugView I could see that the plugin was bombing out due to no HTTP context and never getting to the registration. After trying for a while to get the HTTP context and failing, I decided to tweak things around. First I changed the way the plugin was detected to using inheritance, as described in this post by Allan Thræn. That worked insofar that it did exactly the same thing - but I preferred to use inheritance so left it in there anyway :) I then decided to eliminate the need for the HTTP context at all. The only reason it was there was to get the path using Server.MapPath, but it occurred to me that given my Single-Assembly-Plugin approach, all I had to do was grab the codebase property of the current assembly! That had the added advantage that I was no longer limiting the DLL to having to reside in the BIN folder. In theory it could now even go in the GAC. The updated code looks like this:

   1: Debug.Write("VppInitializerX Loading CloudCuckoo VPP from: " + typeof(VppInitializerX).Assembly.CodeBase);
   2:  
   3: // now binds without using HttpContext
   4:  
   5: Assembly lateBoundAssembly = System.Reflection.Assembly.LoadFrom(typeof(VppInitializerX).Assembly.CodeBase);

As you can see, this code is much cleaner and, most importantly, it works on that machine that was being problemmatical. This is probably a good thing to bear in mind for any EPiServer plugins called in this way - using HTTP context might be risky.


Bookmark with :
Digg It! DZone StumbleUpon Technorati Reddit Del.icio.us Newsvine Furl Blinklist

I've recompiled the CloudCuckoo binary against EPiServer v5 SP1 to save you having to recompile the project yourself. (it was originally built against vanilla v5) Enjoy!

Get CloudCuckoo here


Bookmark with :
Digg It! DZone StumbleUpon Technorati Reddit Del.icio.us Newsvine Furl Blinklist