public static Session Recreate(Session template)
{
// create the channel object used to connect to the server.
ITransportChannel channel = SessionChannel.Create(
template.m_configuration,
template.m_endpoint.Description,
template.m_endpoint.Configuration,
template.m_instanceCertificate,
template.m_configuration.CreateMessageContext());
// create the session object.
Session session = new Session(channel, template, true);
try
{
// open the session.
session.Open(
template.m_sessionName,
(uint)template.m_sessionTimeout,
template.m_identity,
template.m_preferredLocales);
// create the subscriptions.
foreach (Subscription subscription in session.Subscriptions)
{
subscription.Create();
}
}
catch (Exception e)
{
session.Dispose();
throw ServiceResultException.Create(StatusCodes.BadCommunicationError, e, "Could not recreate session. {0}", template.m_sessionName);
}
return session;
}