我无法使用 CoreService SessionAwareCoreServiceClient 删除任何项目。我能够创建/读取组件,创建文件夹...... 作为一个错误,我得到“对象引用未设置为对象的实例”。我想指出,我在 Tridion Content Manager 机器之外的应用程序中使用了核心服务。以下是来自 CM 服务器的日志:
用户:NT AUTHORITY\NETWORK SERVICE
StackTrace 信息详细信息:在 Tridion.UGC.EventHandler.UGCEventHandler.GetDataSourcesForTCM(String[] tcm) 在 Tridion.UGC.EventHandler.UGCEventHandler.DeleteItemStats(TcmUri tcm)
在 Tridion.UGC.EventHandler.UGCEventHandler.HandlerForComitted(IdentifiableObject subject, DeleteEventArgs args, EventPhases 阶段) 在 System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo 方法, 对象目标, Object[] 参数, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) 在系统。 RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo 方法,对象目标,Object[] 参数,签名 sig,MethodAttributes methodAttributes,RuntimeType typeOwner)在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object[] 参数,CultureInfo 文化, Boolean skipVisibilityChecks) 在 System.Delegate.DynamicInvokeImpl(Object[] args) 在 Tridion.ContentManager.Extensibility.EventSubscription.DeliverEvent(IEnumerable1 subjects, TcmEventArgs eventArgs, EventPhases phase) at Tridion.ContentManager.Extensibility.EventSystem.DeliverEvent(IEnumerable
1 个主题,TcmEventArgs eventArgs,EventDeliveryPhase deliveryPhase)
在 Tridion.ContentManager.Extensibility.EventSystem.DeliverEvent(IdentifiableObject 主题,TcmEventArgs eventArgs,EventDeliveryPhase deliveryPhase)
在 Tridion.ContentManager.IdentifiableObject.Delete(DeleteEventArgs deleteEventArgs) 在 Tridion.ContentManager.IdentifiableObject.Delete( ) 在 Tridion.ContentManager.CoreService.CoreServiceBase.Delete(String id)
在 SyncInvokeDelete(Object , Object[] , Object[] ) 在 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] 输入, Object[]& 输出) 在 Tridion.ContentManager.CoreService.TransactionSupportInvoker.Invoke(Object实例,Object[] 输入,Object[]& 输出)在 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime。 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) 的 ProcessMessage41(MessageRpc& rpc) System.ServiceModel 的 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)。Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) ) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)rpc) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)rpc) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
使用已使用的帐户,我可以手动删除项目,这意味着我拥有正确的权限。任何有关的帮助/建议都将不仅仅是可用的......
_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;
此代码用于模拟。在设置文件中,我可以选择是否使用 Windows 凭据或设置文件中的凭据。我使用 Windows LDAP 帐户或手动输入凭据时遇到错误。我还没有尝试为此使用 SDL Administrator。我会尝试并通知你。不管怎样,谢谢你的努力
@UPDATE:我已经尝试使用带有基本 http 端点的常规 CoreService 并且仍然得到相同的错误。因此,身份验证不会在这里造成问题。UGC 事件似乎出了点问题。不幸的是,我没有代码源,也没有关于启用 UGC 的 dll 的任何其他信息。