c# - 没有 SVC 文件的 WCF 依赖注入(inject)

标签 c# wcf inversion-of-control

我有一个通过 net.pipe 公开的 WCF 服务。该服务的托管方式如下:

var hosturi = new Uri("net.pipe://localhost/somewhere");
var host = new ServiceHost(typeof(Service), hosturi);
var serviceBinding = new NetNamedPipeBinding
{
    MaxReceivedMessageSize = int.MaxValue, // and maybe something else
};

serviceBinding.ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas
{
    MaxArrayLength = int.MaxValue, // and maybe something else
};

host.AddServiceEndpoint(typeof(T), serviceBinding, string.Empty);
host.Description.Behaviors.Add(
    new ServiceThrottlingBehavior
    {
        MaxConcurrentCalls = 5000,
        MaxConcurrentInstances = 5000,
        MaxConcurrentSessions = 5000
    }
);
host.Open();

我想指定我的 Service 实例的 DI 工厂获取注入(inject)的任何构造函数依赖项。

虽然有很多关于该主题的文章(例如此处:https://msdn.microsoft.com/en-us/library/hh323725(v=vs.100).aspx),但绝对所有文章都建议使用 .svc 文件指定工厂。

如何在代码中执行此操作?

最佳答案

您自己创建服务主机,因此不需要ServiceHostFactory(这是创建ServceHost的工厂)。因此,只需跳过本文中的步骤 4-6 并使用

将行为添加到您的主机
host.Description.Behaviors.Add(new DependencyInjectionServiceBehavior()); 

关于c# - 没有 SVC 文件的 WCF 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37567402/

相关文章:

c# - .NET 应用程序中不稳定的无效 View 状态问题

wcf - 从 WCF 服务抛出异常而不会出错

java - 每次调用其方法时都会重新创建 CGlib-wired bean

java - 我是否需要显式释放使用 CDI 创建的上下文 JDialog?

c# - Entity Framework 抛出无法在表中插入标识列的显式值

c# - 是否需要注销事件处理程序?

android - 并非全部使用 .NET 的客户端的 WCF REST 安全选项

c# - 依赖注入(inject) (DI) "friendly"库

c# - 在 C# 中访问 PowerPoint 图表

json - InstanceContextMode.WCF wsHttpBinding、webHttpBinding 和 REST 中的 Single