Napisałem prostą usługę WWW WCF, która jest skonfigurowana programowo. naraża on trzy punkty końcowe, które wiążą różne wiązania do tego samego zamówienia:Konwersja programowej konfiguracji usługi WCF na plik konfiguracyjny
- WebHttpBinding
- WebHttpRelayBinding (ponad Microsoft Azure)
- myBinding (self-made wiążące w dodatkowym DLL)
kod konfiguracji jest w tej chwili dość prosty:
WebServiceHost host = new WebServiceHost(
typeof(MyService), new Uri("http://localhost:80/"));
host.AddServiceEndpoint(typeof(MyService), new WebHttpBinding(), "");
ServiceEndpoint sbEndpoint = host.AddServiceEndpoint(
typeof(MyService), new WebHttpRelayBinding(), "http://azureURL");
TransportClientEndpointBehavior sbBehavior =
new TransportClientEndpointBehavior();
sbBehavior.CredentialType = TransportClientCredentialType.UserNamePassword;
sbBehavior.Credentials.UserName.UserName = "azureUserName";
sbBehavior.Credentials.UserName.Password = "azurePassword";
sbEndpoint.Behaviors.Add(sbBehavior);
host.AddServiceEndpoint(typeof(MyService), new MyBinding(), "http://someURL");
host.Open();
Teraz Chcę wyeksportować tę konfigurację do pliku konfiguracyjnego, ponieważ chcę ją zmienić bez konieczności ponownej kompilacji.
Moje pytania w tej chwili są:
- Gdzie mogę znaleźć cenne informacje, aby osiągnąć swój cel? Większość witryn mówi tylko o powiązaniach SOAP - bez słowa o tym, jak dołączyć niestandardowe powiązanie.
- Czy muszę zmienić MyBinding, aby zaakceptować konfigurację za pomocą app.config, czy też ServiceModel nazywa to dokładnie tak, jak robi to moje programistyczne podejście, gdy konfiguracja jest w porządku?
Dzięki za wyjaśnienie procesu budowania pliku konfiguracyjnego. Zgodnie z oczekiwaniami, wdrożenie usługi jest również umową. Wybrałem to, ponieważ kontrakt składa się z dwóch bardzo ogólnych funkcji i nie nadaje się do ponownego użycia. Próbowałem najpierw za pomocą webHttpBinding i skomentowałem istniejącą programową konfigurację. Jednak to nie działa. Usługa nie jest dostępna po otwarciu http: // localhost w mojej przeglądarce internetowej. Czy muszę wprowadzić inne ustawienia aplikacji w VS? (W tej chwili jest to standardowa "aplikacja konsolowa"). – Etan
Jednym z problemów jest: dla wiązania webHttp potrzebujesz WebServiceHost - dla pozostałych wiązań potrzebujesz prostego ServiceHost - więc prawdopodobnie nie będziesz możliwość hostowania wszystkich punktów końcowych w jednym (Web) ServiceHost –