stride3d/stride · error · ContentStreamingException
Missing content storage.
Error message
Missing content storage.
What it means
To stream a texture, Stride reads mip data from the content storage container referenced by the asset's ContentStorageHeader. CreateStreamingTexture calls ContentStreaming.GetStorage; if it returns null the storage container behind the texture asset is unavailable, and a ContentStreamingException("Missing content storage.") is thrown because streaming cannot proceed without it.
Solutions
- Recompile/re-import the texture asset so streaming data and its storage container are emitted
- Verify the database file provider is configured and the raw content storage files exist next to the compiled assets
- Disable texture streaming for that texture (remove streaming flags / use a non-streaming Texture load) if storage is not available
- Check that ContentStreaming.GetStorage inputs (storageHeader) are intact — don't strip headers when copying assets
Example fix
// before
var texture = Content.Load<Texture>("tex", StreamingFlags); // storage files missing
// after
// re-import asset with streaming data, or:
var texture = Content.Load<Texture>("tex", Content.ContentManagerOptions.ForceKeepRaw); // non-streaming path Defensive patterns
Strategy: validation
Validate before calling
var storage = ContentStreaming.GetStorage(ref storageHeader);
if (storage == null)
{
// fall back to non-streaming load
return Content.Load<Texture>(url);
} Try / catch
try
{
streamingManager.RegisterTexture(texture, description);
}
catch (ContentStreamingException)
{
Logger.Warning("Streaming storage missing; loading texture without streaming");
} Prevention
- Compile assets with streaming data enabled when using streaming
- Verify content storage files are deployed with compiled assets
- Ensure the database file provider is configured before loading streaming textures
When it happens
Trigger: RegisterTexture/CreateStreamingTexture receiving a Texture whose image was built without a valid ContentStorageHeader — e.g. textures loaded outside the database file provider, compiled without streaming data, or with the storage file deleted/moved.
Common situations: Enabling texture streaming for assets compiled in a mode that did not emit streaming chunks; running content on a machine where the raw data files (.bin chunks) are missing; loading textures via a provider that has no access to the streaming storage.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- Texture streaming supports only 2D textures and 2D texture…
- Data chunk is missing.
- Data chunk has invalid size.
- Data chunk is not loaded.
- Missing file provider.
AI-assisted analysis of stride3d/stride@96fad776d2 (2026-09-14).
Data as JSON: /api/errors/a0197135c9239c82.
Report an issue: GitHub.
Appendix: source
Thrown at sources/engine/Stride.Rendering/Streaming/StreamingManager.cs:342
Debug.Assert(resource != null, "resource != null");
lock (resources)
{
Debug.Assert(resources.Contains(resource), "resources.Contains(resource)");
resources.Remove(resource);
resourcesLookup.TryRemove(resource.Resource, out _);
activeStreaming.Remove(resource);
}
}
private StreamingTexture CreateStreamingTexture(Texture obj, ref ImageDescription imageDescription, ref ContentStorageHeader storageHeader)
{
// Get content storage container
var storage = ContentStreaming.GetStorage(ref storageHeader);
if (storage == null)
throw new ContentStreamingException("Missing content storage.");
// Find resource or create new
var resource = Get(obj);
if (resource == null)
{
resource = new StreamingTexture(this, obj);
RegisterResource(resource);
}
// Update resource storage/description information (may be modified on asset rebuilding)
resource.Init(Services.GetSafeServiceAs<IDatabaseFileProviderService>(), storage, ref imageDescription);
// Check if cannot use streaming
if (!Enabled)
{
FullyLoadResource(resource);
}
View on GitHub (pinned to 96fad776d2)