Hi
Can anyone see why the licence is not being released?
Thanks
Graeme
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Reflection;
using System.ServiceModel;
using System.ServiceModel.Channels;
using ConsoleApplication1.Epicor.SessionModSvc;
namespace ConsoleApplication1
{
class Program
{
private enum EndpointBindingType { SOAPHttp, BasicHttp }
private static WSHttpBinding GetWsHttpBinding()
{
var binding = new WSHttpBinding();
const int maxBindingSize = Int32.MaxValue; binding.MaxReceivedMessageSize = maxBindingSize; binding.ReaderQuotas.MaxDepth = maxBindingSize; binding.ReaderQuotas.MaxStringContentLength = maxBindingSize; binding.ReaderQuotas.MaxArrayLength = maxBindingSize; binding.ReaderQuotas.MaxBytesPerRead = maxBindingSize; binding.ReaderQuotas.MaxNameTableCharCount = maxBindingSize;
binding.Security.Mode = SecurityMode.Message; binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
return binding;
}
public static BasicHttpBinding GetBasicHttpBinding()
{
var binding = new BasicHttpBinding();
const int maxBindingSize = Int32.MaxValue; binding.MaxReceivedMessageSize = maxBindingSize; binding.ReaderQuotas.MaxDepth = maxBindingSize; binding.ReaderQuotas.MaxStringContentLength = maxBindingSize; binding.ReaderQuotas.MaxArrayLength = maxBindingSize; binding.ReaderQuotas.MaxBytesPerRead = maxBindingSize; binding.ReaderQuotas.MaxNameTableCharCount = maxBindingSize; binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential; binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
return binding;
}
private static TClient GetClient<TClient, TInterface>(string url, string username, string password, EndpointBindingType bindingType) where TClient : ClientBase<TInterface> where TInterface : class
{
Binding binding = null; TClient client;
var endpointAddress = new EndpointAddress(url);
switch (bindingType) { case EndpointBindingType.BasicHttp: binding = GetBasicHttpBinding(); break; case EndpointBindingType.SOAPHttp: binding = GetWsHttpBinding(); break; }
client = (TClient)Activator.CreateInstance(typeof(TClient), binding, endpointAddress);
if (!string.IsNullOrEmpty(username) && (client.ClientCredentials != null)) { client.ClientCredentials.UserName.UserName = username; client.ClientCredentials.UserName.Password = password; }
return client;
}
static void Main(string[] args)
{
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => { return true; };
/*EndpointBindingType bindingType = EndpointBindingType.SOAPHttp; */
EndpointBindingType bindingType = EndpointBindingType.BasicHttp;
string epicorUserID = "manager"; string epiorUserPassword = "manager";
string scheme = "http";
if (bindingType == EndpointBindingType.BasicHttp)
{ scheme = "https"; }
UriBuilder builder = new UriBuilder(scheme, "DELL-GRAEME.Aspera.local");
builder.Path = "E10Demo/Ice/Lib/SessionMod.svc";
SessionModSvcContractClient sessionModClient = GetClient<SessionModSvcContractClient, SessionModSvcContract>(builder.Uri.ToString(), epicorUserID, epiorUserPassword, bindingType);
/* builder.Path = "ERP100500/Erp/BO/AbcCode.svc"; ConsoleApplication1ContractClient ConsoleApplicationClient = GetClient < ConsoleApplicationSvcContractClient, ConsoleApplicationSvcContract> (builder.Uri.ToString(), epicorUserID, epiorUserPassword, bindingType);
*/
Guid sessionId = Guid.Empty;
sessionId = sessionModClient.Login();
builder.Path = "E10Demo/Ice/Lib/SessionMod.svc"; sessionModClient = GetClient < SessionModSvcContractClient, SessionModSvcContract> (builder.Uri.ToString(),epicorUserID,epiorUserPassword,bindingType);
sessionModClient.Endpoint.EndpointBehaviors.Add(new HookServiceBehavior(sessionId, epicorUserID));
sessionId = sessionModClient.Login();
/* sessionModClient.Endpoint.EndpointBehaviors.Add(new HookServiceBehavior(sessionId, epicorUserID)); abcCodeClient.Endpoint.EndpointBehaviors.Add(new HookServiceBehavior(sessionId, epicorUserID));
*/
if (sessionId != Guid.Empty)
{
sessionModClient.Logout();
}
}
}
}