Manchmal ist es nötig die WCF Proxy-Einstellungen aus einer anderen Konfigurationsdateien als der app.config zu laden. Bisher war dies recht schwierig und mit viel eigenem Code verbunden.
Wenn man beispielsweise ein Plugin oder eine COM-Bibliothek für ältere Anwendungen bereitstellt und dort einen WCF Proxy nutzen will, kann man die app.config gleich vergessen. Beim Starten der AppDomain wird der Konfigurationspfad aus Dateinamen der laufenden Anwendung (.exe) + „.config“ belegt. Man hatte bisher folgende Möglichkeiten:
- Pfad der Konfigurationsdatei der AppDomain neu setzen
- Aus der aktuellen AppDomain eine neue starten und beim Start den Pfad mitgeben.
- Die Konfigurationsdatei manuell laden und den Proxy manuell erstellen
Mit .Net 4.5 kann man nun den Pfad der Konfiguration einfach einer Factory übergeben!
1: Configuration config = ConfigurationManager.OpenExeConfiguration("...");
2: ConfigurationChannelFactory<IMyProxy> factory = new ConfigurationChannelFactory<IMyProxy>("endpointName", config, null);
3:
4: //Eigene Anpassungen sind auch noch möglich!
5: //factory.Endpoint.Behaviors.Add(myBehavior);
6:
7: IMyProxy proxy = factory.CreateChannel();
PS: In vielen Beispielen wird als dritter Parameter beim Konstruktor der Factory eine neue Endpoint URL mitgegeben. Einfach leer lassen und er belegt diese mit der aus der Konfiguration.
Sie sehen gerade einen Platzhalterinhalt von Facebook. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Instagram. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen