Jonas Lindau
Apr 1, 2011
visibility 4262
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
Finding Thomas Part 3 - The Moment of Recognition

Remember Thomas? In digital landscape, Thomas is the returning visitor who reads everything, opens every email, converts on nothing. In standard...

Ritu Madan | Jun 26, 2026

Add more scheduled job settings from the Optimizely CMS 12 admin UI -- with OptiScheduledJob.ExtraParameters

  Optimizely (EPiServer) CMS 12 ships a great scheduled-jobs framework, but it has one frustrating gap: a job has nowhere to store its own...

Binh Nguyen Thi | Jun 25, 2026

Automated Search & Navigation to Graph Migration with Claude Code

A Claude Code plugin that scans your S&N codebase, applies Graph SDK transformations, and validates the result. Install once, run one command. CMS ...

Connor Fortin | Jun 24, 2026

Migrating from Find to Graph: Lessons Learned from a Real CMS 13 Project

While migrating a search solution from Optimizely Search & Navigation (Find) to Optimizely Graph in CMS 13, I encountered several issues that were...

Binh Nguyen Thi | Jun 24, 2026