Wie zum hinzufügen von WCF-custom-Bindung-element-Erweiterungen client-Seite in einem code, ohne irgendwelche config-Dateien?
Situation
Habe ich eine client-Bibliothek verwendet, die die Windows Azure AppFabric Service Bus NetTcpRelayBinding, um eine Verbindung mit dem Endpunkt. Die client-Bibliothek gehostet wird, die von einer Anwendung, die nicht unbedingt ein .NET-Anwendung. Sowieso, app.config ist aus der Frage heraus, was bedeutet, dass alles, was konfiguriert werden soll im code.
Maschine.config ist eine option, aber es ist besser, wenn es vermieden werden kann. Eine lokale benutzerdefinierte proxy-oder front-end-server könnte eine weitere option, aber ich würde gerne diese option erkunden, bevor sich verändernden Architektur, die radikal.
Gibt es keine Probleme mit system-Bindungen, aber ich habe nicht herausgefunden, oder eine Lösung gefunden, wie Sie die folgende Konfiguration, um eine ChannelFactory in code:
<extensions>
<bindingElementExtensions>
<add name="tcpRelayTransport" type="Microsoft.ServiceBus.Configuration.TcpRelayTransportElement, Microsoft.ServiceBus, Version=1.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</bindingElementExtensions>
<bindingExtensions>
<add name="netTcpRelayBinding" type="Microsoft.ServiceBus.Configuration.NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</bindingExtensions>
</extensions>
- Haben Sie einen Blick auf msdn.microsoft.com/en-us/library/..., die erklärt, nettcprelaybinding mit c# - code
- Dieses Beispiel noch davon ausgegangen, dass die Service-Bus-binding-Erweiterungen (wie NetTcpRelayBinding) sind in der app.config oder machine.config.
- In diesem Fall kommt deine Frage bedeuten auf, wie Sie die bindingElementExtensions über C# - code?
- Ja, ich denke das wäre genauer gewesen Titel korrigiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die Lösung, die nun getestet wurde. Hoffentlich macht es klar, was das problem wirklich war und vielleicht hilft es jemand anderem mit einem ähnlichen problem. Gutschriften für die co-worker, die die Zeit hatte, um das Problem zu untersuchen.
War die Lösung zum Bearbeiten dynamisch die Konfiguration und fügen Sie die Referenz an der gewünschten Binding-Element-Erweiterungen (ohne app.config in jedem beliebigen layer oder ohne Veränderung Maschine.config im client-Maschinen):
Danke an alle die versucht haben zu helfen, obwohl!
Können Sie die binding-element der Erweiterung durch code, der durch das schreiben von benutzerdefinierten service-host-Fabrik. Eine ähnliche Frage wurde beantwortet hier
Basierend auf Ihre Art von WCF-service-Sie müssen nur die Erben die entsprechenden servicehostfactory-Klasse, wenn das schreiben von benutzerdefinierten service-host-Fabrik. Zum Beispiel, wie unten gezeigt:
Wie erstellen Sie einen benutzerdefinierten service-host
Wenn eine REST WCF-Dienst verwenden WebServiceHostFactory
Wenn eine WCF-Dienst verwenden ServiceHostFactory
Ein Beispiel für diese ohne config ist hier erhältlich: http://code.msdn.microsoft.com/windowsazure/Relayed-Messaging-Windows-0d2cede3
Folgenden ist der Codeausschnitt: