Vac*_*ano 5 c# wcf servicebehavior
我试图将Unity插入带有服务行为的WCF服务库.
我需要一个简单的骨干服务行为示例.
我想要做的就是在启动WCF服务时设置我的IOC Unity容器.
注意:我没有使用WCF服务应用程序.所以我无法访问任何ASP.NET方法.从概念的角度来看,服务行为似乎是最优雅的方法.但我不知道如何设置一个(我需要什么代码,我是否更新配置文件等).
如果要控制WCF服务实例的实例化,则需要一个服务行为来插入IInstanceProvider它.您可以在http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/31/wcf-extensibility-iinstanceprovider.aspx上找到有关该界面的帖子中的简单提供程序实现(对于IoC容器).
根据评论,如果你只需要一个简单的IServiceBehavior,这里有一个你可以使用的示例实现.
public class StackOverflow_6539963
{
public class MyServiceBehaviorAttribute : Attribute, IServiceBehavior
{
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
{
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
Console.WriteLine("In MyServiceBehaviorAttribute.ApplyDispatchBehavior");
// do whatever initialization you need
}
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
}
[ServiceContract]
public interface ITest
{
[OperationContract]
string Echo(string text);
}
[MyServiceBehavior]
public class Service : ITest
{
public string Echo(string text)
{
return text;
}
}
public static void Test()
{
string baseAddress = "http://" + Environment.MachineName + ":8000/Service";
ServiceHost host = new ServiceHost(typeof(Service), new Uri(baseAddress));
host.AddServiceEndpoint(typeof(ITest), new BasicHttpBinding(), "");
host.Open();
Console.WriteLine("Host opened");
Console.Write("Press ENTER to close the host");
Console.ReadLine();
host.Close();
}
}
Run Code Online (Sandbox Code Playgroud)