Mam plik app.config, który w formie:Jak odczytać wartość atrybutu zdefiniowanego w pliku app.config?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://something.com"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IFileTransfer"
contract="ABC" name="XXX" />
<endpoint address="http://something2.com"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IFileTransfer"
contract="ABC2" name="YYY" />
</client>
</system.serviceModel>
</configuration>
Chcę odczytać wartość w atrybucie „Adres” punktu końcowego węzła, który ma name = „XXX”. Proszę, pokaż mi, jak to zrobić!
(dalej belowing disscussing z marc_s Niestety umieścić tekst tutaj ponieważ komentarz nie pozwalają kodów wielkoformatowych.) @marc_s: Używam z poniższych kodów, aby przeczytać powyższy plik, ale to pokazuje, że clientSection.Endpoints ma 0 członkowie (Count = 0). Proszę pomóż!
public MainWindow()
{
var exeFile = Environment.GetCommandLineArgs()[0];
var configFile = String.Format("{0}.config", exeFile);
var config = ConfigurationManager.OpenExeConfiguration(configFile);
var wcfSection = ServiceModelSectionGroup.GetSectionGroup(config);
var clientSection = wcfSection.Client;
foreach (ChannelEndpointElement endpointElement in clientSection.Endpoints)
{
if (endpointElement.Name == "XXX")
{
var addr = endpointElement.Address.ToString();
}
}
}
nie należy używać „plik * vshost.config - to tylko będzie występować, jeśli uruchomić program z w Visual Studio, użyj 'MyApp.exe.config' zamiast !! –
@marc_s: Witam, zaktualizowałem swój kod, chociaż liczba odczytanych punktów końcowych wciąż wynosi zero –
tak, widzę to - z moim kodem działa, spróbuj! Nie używaj swojej 'ServiceModelSectionGroup.GetSectionGroup (config);' i następujących linii, ale użyj mojego kodu zamiast ('ConfigurationManager.GetSection (....)') - działa w moim przypadku! –