|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Channels;
using System.Net;
using System.Threading;
namespace WcfServiceHost
{
public class SvcHost
{
private ServiceHost serviceHost = null;
/// <summary>
/// Create WCF service host acting as proxy for the true type
/// </summary>
/// <param name="path">Path to an assembly file containing the true type.</param>
/// <param name="name">Name of a generated WCF proxy type.</param>
/// <param name="sessionAllowed">Session support indicator.</param>
/// <returns>Success indicator.</returns>
public bool CreateServiceHost(string path, string name, bool sessionAllowed)
{
bool br = false;
string className = name;
// Generate type for WCF service. This type serves as proxy of a true type.
Type serviceType = WcfGenerator.GenerateServiceType(path, className, sessionAllowed);
if (null != serviceType)
{
serviceHost = OpenServiceHost(serviceType);
if (null != serviceHost)
{
foreach (ServiceEndpoint sep in serviceHost.Description.Endpoints)
Console.WriteLine(sep.Address.ToString());
br = true;
}
}
return br;
}
/// <summary>
/// Actually create and open service host.
/// </summary>
/// <param name="serviceType">WCF service type.</param>
/// <returns>Service host object.</returns>
internal static ServiceHost OpenServiceHost(Type serviceType)
{
ServiceHost serviceHost = null;
if (null != serviceType)
{
try
{
serviceHost = new ServiceHost(serviceType);
serviceHost.Open();
}
catch (Exception e)
{
serviceHost = null;
Console.WriteLine("ERROR! {0}", e.Message);
}
}
return serviceHost;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.