- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试将 Unity 插入具有服务行为的 WCF 服务库。
我需要一个简单的服务行为示例。
我只想在启动 WCF 服务时设置我的 IOC Unity 容器。
注意:我没有使用 WCF 服务应用程序。所以我无法使用任何 ASP.NET 方法来执行此操作。从概念的角度来看,服务行为似乎是最优雅的方法。但我不知道如何设置(我需要什么代码,是否更新配置文件等)。
最佳答案
如果您想控制 WCF 服务实例的实例化,您需要一个服务行为来为此插入一个 IInstanceProvider
。您可以在关于该接口(interface)的帖子中找到一个简单的提供程序实现(用于 IoC 容器)http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/31/wcf-extensibility-iinstanceprovider.aspx .
根据评论,如果您只需要一个简单的 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();
}
}
关于c# - IServiceBehavior 和 ApplyDispatchBehavior 的简单示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6539963/
我正在尝试将 Unity 插入具有服务行为的 WCF 服务库。 我需要一个简单的服务行为示例。 我只想在启动 WCF 服务时设置我的 IOC Unity 容器。 注意:我没有使用 WCF 服务应用程序
我有一个实现 IServiceBehavior 的属性来保护我的 WCF 服务,如下所示: public class AuthorizedServiceAttribute : Attribute, I
我是一名优秀的程序员,十分优秀!