2016-06-01 6 views
1

Ich habe einen WCF-Dienst, der über net.pipe verfügbar gemacht wird. Dieser Service ist wie so gehostet:WCF-Abhängigkeitsinjektion ohne SVC-Datei

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(); 

ich die DI Fabrik für meine Service-Instanz erhält keine Konstruktor Abhängigkeiten injiziert angeben möchten.

Während es gibt viele Artikel zu diesem Thema (z. B. hier: https://msdn.microsoft.com/en-us/library/hh323725(v=vs.100).aspx) absolut alle von ihnen vorschlagen, die Factory mit der .svc-Datei.

Wie kann ich das im Code tun?

+0

@Evk Verhalten hinzu. Sie haben mir sehr geholfen! Das hat funktioniert. Wenn Sie Ihren Kommentar als Antwort hinzufügen, werde ich ihn akzeptieren. – zaitsman

Antwort

1

Sie erstellen den Service-Host selbst, so dass Sie ServiceHostFactory nicht benötigen (dies ist eine Factory zum Erstellen von ServceHost). Überspringen Sie einfach die Schritte 4 bis 6 aus dem Artikel und fügen Sie Ihrem Host mit

host.Description.Behaviors.Add(new DependencyInjectionServiceBehavior());