C # Entity Framework utilizando solo un ObjectContext por HttpContext

En ASP.NET MVC 2, usando Entity Framework 4, obtengo este error "Varias instancias de IEntityChangeTracker no pueden hacer referencia a un objeto de entidad".

Una búsqueda de SO muestra que probablemente se deba a que tengo diferentes instancias de Entity Framework ObjectContext, cuando debería ser solo una instancia de ObjectContext para cada HttpContext.

Tengo este código (escrito mucho antes de unirme) que parece hacer exactamente eso: tener un ObjectContext por cada HttpContext. Pero recibo la excepción "IEntityChangeTracker" con frecuencia, por lo que probablemente no funcione según lo previsto:

// in ObjectContextManager.cs
public const string ConnectionString = "name=MyAppEntities";
public const string ContainerName = "MyAppEntities";

public static ObjectContext GetObjectContext()
{
    ObjectContext objectContext = GetCurrentObjectContext();
    if (objectContext == null) // create and store the object context
    {   
        objectContext = new ObjectContext(ConnectionString, ContainerName);     
        objectContext.ContextOptions.LazyLoadingEnabled = true;    
        StoreCurrentObjectContext(objectContext);
    }
    return objectContext;
}

private static void StoreCurrentObjectContext(ObjectContext objectContext)
{
    if (HttpContext.Current.Items.Contains("EF.ObjectContext"))
        HttpContext.Current.Items["EF.ObjectContext"] = objectContext;
    else
        HttpContext.Current.Items.Add("EF.ObjectContext", objectContext);
}

private static ObjectContext GetCurrentObjectContext()
{
    ObjectContext objectContext = null;
    if (HttpContext.Current.Items.Contains("EF.ObjectContext")
        objectContext = (ObjectContext)HttpContext.Current.Items["EF.ObjectContext"];
    return objectContext;
}

He examinado este código y parece correcto. Por lo que puedo decir, devuelve una instancia de ObjectContext para cada HttpContext. ¿Está mal el código?

Si el código no es incorrecto, ¿por qué si no obtengo la excepción "Un objeto de entidad no puede ser referenciado por múltiples instancias de IEntityChangeTracker" excepción?

EDIT: para mostrar cómo se dispone el ObjectContext:

// in HttpRequestModule.cs
private void Application_EndRequest(object source, EventArgs e)
{
    ServiceLocator.Current.GetInstance<IRepositoryContext>().Terminate();
}

// in RepositoryContext.cs
public void Terminate() 
{
    ObjectContextManager.RemoveCurrentObjectContext();
}

// in ObjectContextManager.cs
public static void RemoveCurrentObjectContext()
{
    ObjectContext objectContext = GetCurrentObjectContext();
    if (objectContext != null)
    {
        HttpContext.Current.Items.Remove("EF.ObjectContext");
        objectContext.Dispose();
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta