1

When I publish the Media library I get the following error, how do I know what provider is not configured?

Job started: Publish to 'web'|#Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Sitecore.Framework.Data.Blobs.Abstractions.BlobProviderException: No supported provider for  is configured.
   at Sitecore.Framework.Data.Blobs.BlobStorage.GetBlobProvider[T](BlobIdentifier identifier)
   at Sitecore.Publishing.PublishHelper.CopyBlobField(Field sourceField, Item targetVersion)
   at Sitecore.Publishing.PublishHelper.CopyBlobFields(Item sourceVersion, Item targetVersion)
   at Sitecore.Publishing.PublishHelper.TransformToTargetVersion(Item sourceVersion)
   at Sitecore.Publishing.PublishHelper.CopyToTarget(Item sourceVersion, Item originalItem)
   at Sitecore.Publishing.PublishHelper.PublishVersionToTarget(Item sourceVersion, Item targetItem, Boolean targetCreated)
   at Sitecore.Publishing.PublishHelper.PublishVersion(Item sourceVersion)
   at Sitecore.Publishing.Pipelines.PublishItem.PerformAction.Process(PublishItemContext context)
   at (Object , Object )
   at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
   at Sitecore.Publishing.Pipelines.PublishItem.PublishItemPipeline.Run(PublishItemContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessPublishingCandidate(PublishingCandidate entry, PublishContext context, List`1& referrers, List`1& children)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessPublishingCandidate(PublishingCandidate entry, PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessEntries(IEnumerable`1 entries, PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessPublishingCandidate(PublishingCandidate entry, PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessEntries(IEnumerable`1 entries, PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessPublishingCandidate(PublishingCandidate entry, PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessEntries(IEnumerable`1 entries, PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessEntries(PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.Process(PublishContext context)
   at (Object , Object )
   at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
   at Sitecore.Publishing.Pipelines.Publish.PublishPipeline.Run(PublishContext context)
   at Sitecore.Publishing.Publisher.PublishWithResult()
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Sitecore.Reflection.ReflectionUtil.InvokeMethod(MethodInfo method, Object[] parameters, Object obj)
   at Sitecore.Jobs.JobRunner.RunMethod(JobArgs args)
   at (Object , Object )
   at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
   at Sitecore.Jobs.DefaultJob.DoExecute()
   at Sitecore.Abstractions.BaseJob.ThreadEntry(Object state)
0

3 Answers 3

0

This issue occurs when blob is missing from the blobs table for the media item. You can run below query to find those items from database.

  1. To find missing blob for unversioned media, you can run below query:
select itemid
FROM [dbo].[SharedFields] s
left join [dbo].[Blobs] b on s.value = cast(b.BlobId as varchar(36))
where s.fieldid = '{40E50ED9-BA07-4702-992E-A912738D32DC}' and b.BlobId is null

where fieldid in above query contains the blob field id in the unversioned media template

  1. To find missing blob for versioned media, you can run below query:
select itemid 
FROM [dbo].[VersionedFields] s 
left join [dbo].[Blobs] b on s.value = cast(b.BlobId as varchar(36))
where s.fieldid = '{DBBE7D99-1388-4357-BB34-AD71EDF18ED3}' and b.BlobId is null

where fieldid in above query contains the blob field id in the versioned media template

Once in the above query you get the item id against which you are getting the issue, then you can delete the row from SharedFields or VersionedFields table.

Hope this helps!!!

0

Publish item or Publish site might fail with an unhandled exception while publishing media items with an empty Media field.

As an alternative, use the following options:

  1. Attach a new media to media items with an empty Media field.
  2. Make these media items unpublishable.

Source: https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB1001874

0

The issue occurs if there is a reference from a media item "blob" field to a missing blob in the "Blobs" table. You need to clear these references to allow publishing.

Here is the SQL query you can use.

SELECT itemid 
FROM [dbo].[SharedFields] s 
LEFT JOIN [dbo].[Blobs] b ON s.value = cast(b.BlobId as varchar(36)) 
WHERE s.fieldid = '{40E50ED9-BA07-4702-992E-A912738D32DC}' AND b.BlobId IS null

Also if you don't have access to the database, you can run this query using PowerShell like below.

$sql = @"
SELECT itemid
FROM [dbo].[SharedFields] s
LEFT JOIN [dbo].[Blobs] b ON s.value = '{' + cast(b.BlobId as varchar(36)) + '}'
WHERE s.fieldid = '{40E50ED9-BA07-4702-992E-A912738D32DC}' AND blobid IS null
"@

Import-Function Invoke-SqlCommand

$connection = [Sitecore.Configuration.Settings]::GetConnectionString("master")
$builder = New-Object System.Data.SqlClient.SqlConnectionStringBuilder $connection
$dbName = $builder.InitialCatalog
$query = $sql
    
Invoke-SqlCommand -Connection $connection -Query $query -As Scalar

And then you can verify them and then safely delete those SharedFields from the database

Hope this helps.

Not the answer you're looking for? Browse other questions tagged or ask your own question.