I have an ECL rovider which until recently has worked quite well. It still allows me to browse my 3rd Party data source, but when I try to use an ECL item (i.e. link to it and save, or publish it), I get the following error:

An error occurred while trying to resolve URI: ecl:769-s7-167741158-s7AssetSet-file.ecl

The URI prefix is not recognized.

at Tridion.ContentManager.ContentManagement.BinaryContent.GetAppropriateProvider() 
at Tridion.ContentManager.ContentManagement.BinaryContent.GetFileName() at
Tridion.ContentManager.ContentManagement.BinaryContent.SyncDerivedProperties(Boolean resolveMultimediaType) at 
Tridion.ContentManager.ContentManagement.Component.SyncDerivedProperties() at
Tridion.ContentManager.IdentifiableObject.OnSaving(SaveEventArgs eventArgs) at
Tridion.ContentManager.ContentManagement.RepositoryLocalObject.OnSaving(SaveEventArgs eventArgs) at 
Tridion.ContentManager.ContentManagement.VersionedItem.OnSaving(SaveEventArgs eventArgs) at 
Tridion.ContentManager.ContentManagement.Component.OnSaving(SaveEventArgs eventArgs) at 
Tridion.ContentManager.IdentifiableObject.Save(SaveEventArgs eventArgs) at 
Tridion.ContentManager.ContentManagement.VersionedItem.Save(Boolean checkInAfterSave) at 
Tridion.ExternalContentLibrary.DomainModel.StubItem.CreateNewStubItem(TcmUri stubFolderUri, IEclUri eclUri, MountPoint mountPoint, Boolean checkInAfterSave, XmlElement metadata) at 
Tridion.ExternalContentLibrary.DomainModel.StubItem.<>c__DisplayClass1.<CreateOrGetStubId>b__0(TcmUri parentFolderUri) at 
Tridion.ExternalContentLibrary.DomainModel.TcmObjectCreator.GetOrCreateItemUri(Session session, TcmUri parentItemUri, String itemName, Func`2 create) at 
Tridion.ExternalContentLibrary.DomainModel.TcmObjectCreator.<>c__DisplayClass4.<GetOrCreateItemUri>b__2() at 
Tridion.Infrastructure.Caching.Cache`3.GetOrCreateWithBatchRead(TKey key, TValidatorState validateState, Func`1 createNewValues) at 
Tridion.ExternalContentLibrary.DomainModel.TcmObjectCreator.GetOrCreateItemUri(TcmUri parentItemUri, IEnumerable`1 path, UserContext userContext, Func`2 create) at 
Tridion.ExternalContentLibrary.DomainModel.StubItem.CreateOrGetStubId(IEclUri eclItemUri, MountPoint mountPoint, Boolean checkInAfterSave, XmlElement metadata) at 
Tridion.ExternalContentLibrary.DomainModel.UserContext.ExecutePrivileged[T](String userName, Func`1 privilegedCode) at 
Tridion.ExternalContentLibrary.DomainModel.MountPoint.CreateOrGetStubId(IEclUri eclItemUri) at 
Tridion.ExternalContentLibrary.DomainModel.MountPoint.<CreateOrGetStubUris>b__62(<>f__AnonymousType3`2 <>h__TransparentIdentifier5c) at 
System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x) at 
System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at 
System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer) at
Tridion.ExternalContentLibrary.DomainModel.MountPoint.CreateOrGetStubUris(IEnumerable`1 eclItemUris, UserContext userContext) at 
SyncInvokeCreateOrGetStubUris(Object , Object[] , Object[] ) at 
System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at 
Tridion.ExternalContentLibrary.Service.TransactionSupportInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at 
System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at 
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at 
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) at 
System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

Has anyone seen this before? Any suggestions on what may cause this? I have found that if I rename the stub component (in the database of my sandbox) that the issue seems to go away. However I can't open or delete the stub components in the GUI.


Seems like Tridion.ExternalContentLibrary.TcmExtension is not installed or not working on your CM

In Tridion.ContentManager.config in "extensions" section you should have something like this

<add assemblyFileName="YOUR_TRIDION_FOLDER/bin/Tridion.ExternalContentLibrary.TcmExtension.dll" />

ECL installer adds it there but may be it is removed on your system for some reason.

With out Tridion.ExternalContentLibrary.TcmExtension ECL can not work properly

May be this extension can not be loaded because of some error See Event Log for errors from "Tridion Content Manager Service Host" service

Or start TcmServiceHost.exe in debug mode to see more information

TcmServiceHost.exe /d 
| improve this answer | |
  • Thanks Yuri, I am a bit confused. In the past I have never added my extension to the Tridion.ContentManager.config file. Is this an out-of-the-box DLL/config? Also, which installer are you talking about? The main CM installer? – Chris Summers Mar 12 '14 at 13:49
  • ECL Installer usualy add this extension But may be it was removed – Yuri Bondarchuk Mar 13 '14 at 14:19

It seems this was related to an event handler that was triggered on Component Save events. This was preventing the Stub Components being saved. Strangely no errors were being raised in the normal places, so I only found this by luck. The "The URI prefix is not recognized." was a bit of a red herring.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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