, если вы ищете способ создать и зарегистрировать службу wcf в коде pls, проверьте приведенный ниже код для примера:
ниже приведен метод для создания объекта узла службы:
public static ServiceHost RegisterService<T>(object service, int port, string serviceName)
{
// Returns a list of ipaddress configuration
IPHostEntry ips = Dns.GetHostEntry(Dns.GetHostName());
// Select the first entry. I hope it's this maschines IP
IPAddress ipAddress = ips.AddressList[0];
// Create the url that is needed to specify where the service should be started
string urlService = "net.tcp://" + ipAddress.ToString() + String.Format(":{0}/{1}", port, serviceName);
// Instruct the ServiceHost that the type that is used is a ServiceLibrary.service1
ServiceHost host = new ServiceHost(service);
// define events if needed
//host.Opening += new EventHandler(HostOpeningEvent);
//host.Opened += new EventHandler(HostOpenedEvent);
//host.Closing += new EventHandler(HostClosingEvent);
//host.Closed += new EventHandler(HostClosedEvent);
// The binding is where we can choose what transport layer we want to use. HTTP, TCP ect.
NetTcpBinding tcpBinding = new NetTcpBinding();
tcpBinding.TransactionFlow = false;
tcpBinding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign;
tcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
tcpBinding.Security.Mode = SecurityMode.None;
// Add a endpoint
host.AddServiceEndpoint(typeof(T), tcpBinding, urlService);
// A channel to describe the service. Used with the proxy scvutil.exe tool
ServiceMetadataBehavior metadataBehavior;
metadataBehavior = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
if (metadataBehavior == null)
{
string httpURL = "http://" + ipAddress.ToString() + String.Format(":{0}/{1}", port + 1, serviceName);
// This is how I create the proxy object that is generated via the svcutil.exe tool
metadataBehavior = new ServiceMetadataBehavior();
metadataBehavior.HttpGetUrl = new Uri(httpURL);
metadataBehavior.HttpGetEnabled = true;
metadataBehavior.ToString();
host.Description.Behaviors.Add(metadataBehavior);
}
return host;
}
вот как вы можете его использовать:
ServiceHost host = RegisterService<your_service_interface>(your_service, port, "yout_service_name");
host.Open();
надеюсь, это поможет, с уважением