Jonas Lindau
Apr 1, 2011
visibility 4291
star star star star star
(0 votes)

MIME-types and VPP

Yesterday i ran into a problem when i was moving an old JAVA-application from an Apache-server into i VPP-folder on our EPiServer site.

What i wanted to do was to host the JNLP-file and the JAR-files in a VPP-folder, and simple create a hyperlink to the JNLP-file from a web page, rather then have a separate Apache that only serves JNLP-files.

I knew it would be a bit of an issue to set the correct MIME-types for my JNLP-file when stored on a VPP-folder, so what i wanted was a flexible solution that would allow me to add other MIME-types if needed. Here is what i came up with:

 

First of all i added a handler in global.asax that is triggered when i file transmission starts.

   1:  void Application_Start(object sender, EventArgs e)
   2:  {
   3:      UnifiedFile.UnifiedFileTransmitting += 
               new UnifiedFileEventHandler(UnifiedFile_UnifiedFileTransmitting);
   4:  }

 

Also in global.asax:

   1:  void UnifiedFile_UnifiedFileTransmitting(UnifiedFile sender, 
           UnifiedVirtualPathEventArgs e)
   2:  {
   3:      if (sender == null || sender.Name == null || sender.Extension == null)
   4:          return;
   5:   
   6:      UnifiedFileManager.HandleMimeType(sender.Extension);
   7:  }

 

As you can see i don’t add a lot of code in global.asax, i prefer to create manager-classes. The UnifiedFileManager-class looks like this:

   1:  public static class UnifiedFileManager
   2:  {
   3:      public static void HandleMimeType(string Extension)
   4:      {
   5:          string HandledMimeTypes = 
                   ConfigurationManager.AppSettings["HandledMimeTypes"].ToString();
   6:   
   7:          foreach (string HandledMimeType in HandledMimeTypes.Split("|".ToCharArray()))
   8:          {
   9:              string[] ThisMimeType = HandledMimeType.Split(";".ToCharArray());
  10:              if (ThisMimeType[0].Equals(Extension))
  11:                  HttpContext.Current.Response.ContentType = ThisMimeType[1];
  12:          }
  13:      }
  14:  }

 

And the final step is to add a line in appSettings. This is where you store the MIME-types and their extensions:

<add key="HandledMimeTypes" value=".jnlp;application/x-java-jnlp-file" />

To add more MIME-types, simple separate them with a |-character, like this:

<add key="HandledMimeTypes" 
value=".jnlp;application/x-java-jnlp-file|.pdf|application/octet-stream" />

Now, i was able to launch my JNLP-file without any problems.

Apr 01, 2011

Comments

error Please login to comment.
Latest blogs
You’re not headless. You’re hybrid — and that’s the CMS 12 default.

For CMS 12 / Commerce teams with a React (or similar) storefront who keep hearing “just go headless” or “just move to Graph.” This is Part 1 of Fin...

Hanskumar Tripathi | Aug 13, 2026

Stott Security for Optimizely SaaS CMS

Introduction Stott Security  has been helping developers and editors manage Content Security Policies and security headers on  Optimizely PaaS CMS...

Mark Stott | Aug 13, 2026

Optimizely XML Resource Builder: A Visual Studio Extension for Language Resource Files

Anyone who has worked on a larger Optimizely solution will know the feeling. You add or update a page type, block type, or shared base class,

Adnan Zameer | Aug 13, 2026 |

Optimizely SaaS CMS Management API: The Write Side of Headless

Everything I’ve written in this series so far has been about reading content — Optimizely Graph, webhooks, ISR, caching layers. But at some point y...

Kiran Patil | Aug 12, 2026 |