/// <summary> /// Initializes a new instance of the <see cref="Session"/> class. /// </summary> /// <param name="clientMode"><see cref="T:TcmCoreService.Configuration.ClientMode" /></param> /// <param name="targetUri">Target <see cref="T:System.Uri" /></param> /// <param name="domain">Optional domain</param> /// <param name="userName">Optional username</param> /// <param name="password">Optional password</param> public Session(ClientMode clientMode, Uri targetUri, String domain, String userName, String password) : base(targetUri, userName, password) { mClientMode = clientMode; mTargetUri = targetUri; switch (clientMode) { case ClientMode.HttpClient: mClient = new SessionAwareCoreServiceClient(ClientConfiguration.ClientWSHttpBinding, new EndpointAddress(ClientConfiguration.ClientWSHttpUri(targetUri))); break; case ClientMode.TcpClient: default: if (ClientConfiguration.IsRunningOnMono) { throw new NotImplementedException("NetTcpBinding on Mono cannot be used with Tridion CoreService"); } mClient = new SessionAwareCoreServiceClient(ClientConfiguration.ClientTcpBinding, new EndpointAddress(ClientConfiguration.ClientTcpUri(targetUri))); break; } if (!String.IsNullOrEmpty(userName) && !String.IsNullOrEmpty(password)) { if (!String.IsNullOrEmpty(domain)) { mCredentials = new NetworkCredential(userName, password, domain); } else { mCredentials = new NetworkCredential(userName, password); } } else { mCredentials = CredentialCache.DefaultNetworkCredentials; } mClient.ClientCredentials.Windows.ClientCredential = mCredentials; }