Uygulamayı çalıştırıp, web servisini çağırdığımızda aşağıdaki gibi hata alınmaktadır:
An endpoint configuration section for contract '...' could not be loaded because more than one endpoint configuration for that contract was found. Please indicate the preferred endpoint configuration section by name.
Uygulama, Web servisine bağlanınca hangi enpoint tanımı ile bağlanacağını tespit edemediğinden bu hata oluşmaktadır.
Örnek kod:
private void button1_Click(object sender, EventArgs e)
{
ServiceReference2.ConvertTemperatureSoapClient service2 = new ConvertTemperatureSoapClient();
double result2 = service2.ConvertTemp(60.5, TemperatureUnit.degreeCelsius, TemperatureUnit.degreeFahrenheit);
}
App.config bilgileri:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="ConvertTemperatureSoap" />
</basicHttpBinding>
<customBinding>
<binding name="ConvertTemperatureSoap12">
<textMessageEncoding messageVersion="Soap12" />
<httpTransport />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://www.webservicex.net/ConvertTemperature.asmx"
binding="basicHttpBinding" bindingConfiguration="ConvertTemperatureSoap"
contract="ServiceReference2.ConvertTemperatureSoap" name="ConvertTemperatureSoap" />
<endpoint address="http://www.webservicex.net/ConvertTemperature.asmx"
binding="customBinding" bindingConfiguration="ConvertTemperatureSoap12"
contract="ServiceReference2.ConvertTemperatureSoap" name="ConvertTemperatureSoap12" />
</client>
</system.serviceModel>
Çözüm:
App.config dosyasında Sarı renkle işaretlediğimiz endpoint tanımını pasif veya sildiğimizde sorun düzelmektedir. Veya Kod ile bağlanırken hangi konfigurasyon bilgisi ile bağlanılacağını belirtmek gerekmektedir.
Kaynaklar: