Je ne parviens pas à supprimer un élément en utilisant le CoreService SessionAwareCoreServiceClient. Je suis capable de créer/lire des composants, de créer des dossiers... . Comme erreur, j'ai obtenu "Object reference not set to an instance of an object". Je tiens à préciser que j'utilise le core service dans mon application en dehors de la machine Tridion Content Manager. Voici les journaux du serveur CM :
Utilisateur : NT AUTHORITY \NETWORK SERVICE
Détails des informations du StackTrace : à Tridion.UGC.EventHandler.UGCEventHandler.GetDataSourcesForTCM(String[] tcm) at Tridion.UGC.EventHandler.UGCEventHandler.DeleteItemStats(TcmUri tcm)
sur Tridion.UGC.EventHandler.UGCEventHandler.HandlerForComitted(IdentifiableObject subject, DeleteEventArgs args, EventPhases phase) at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) at System.Delegate.DynamicInvokeImpl(Object[] args) at Tridion.ContentManager.Extensibility.EventSubscription.DeliverEvent(IEnumerable1 subjects, TcmEventArgs eventArgs, EventPhases phase) at Tridion.ContentManager.Extensibility.EventSystem.DeliverEvent(IEnumerable
1 sujets, TcmEventArgs eventArgs, EventDeliveryPhase deliveryPhase)
sur Tridion.ContentManager.Extensibility.EventSystem.DeliverEvent(IdentifiableObject subject, TcmEventArgs eventArgs, EventDeliveryPhase deliveryPhase)
at Tridion.ContentManager.IdentifiableObject.Delete(DeleteEventArgs deleteEventArgs) at Tridion.ContentManager.IdentifiableObject.Delete() at Tridion.ContentManager.CoreService.CoreServiceBase.Delete(String id)
at SyncInvokeDelete(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at Tridion.ContentManager.CoreService.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.ProcessMessage41(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) at rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) at rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) at rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) at rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
Avec le compte utilisé, je suis en mesure de supprimer manuellement un élément, ce qui signifie que j'ai les bonnes permissions. Toute aide/suggestion à ce sujet serait plus que bienvenue...
_client = new SessionAwareCoreServiceClient("wsHttp_2011");
bool useWindowsCredentials = bool.Parse(Environment.EnvironmentUserSettings.UseWindowsCredentials);
var credentials = CredentialCache.DefaultNetworkCredentials;
if (!useWindowsCredentials)
{
string password=Environment.EnvironmentUserSettings.Password;
credentials = new NetworkCredential(Environment.EnvironmentUserSettings.UserName, password);
}
_client.ChannelFactory.Credentials.Windows.ClientCredential = credentials;
Ce code est utilisé pour l'usurpation d'identité. Dans le fichier de configuration, j'ai la possibilité de décider si les informations d'identification de Windows seront utilisées ou celles du fichier de configuration. J'ai obtenu l'erreur soit en utilisant le compte LDAP de Windows, soit en entrant les informations d'identification manuellement. Je n'ai pas encore essayé d'utiliser SDL Administrator pour cela. Je vais l'essayer et vous en informer. Quoi qu'il en soit, je vous remercie pour vos efforts.
@UPDATE : J'ai essayé d'utiliser le CoreService ordinaire avec le point de terminaison http de base et j'obtiens toujours la même erreur. Donc l'authentification ne cause pas de problèmes ici. Il semble que quelque chose ne va pas avec les événements UGC. Malheureusement, je n'ai pas de source de code ni d'informations supplémentaires sur la dll activée par UGC.