Web Service – Endpoint Hatası ve Çözümü
Bir web service ile çalışacaksınız ve gerekli tüm entegrasyon işlemlerini başarıyla tamamladınız. Web Service’den verilerinizi çektiniz, modifike ettiniz ve artık projeyi çalıştırma zamanı geldi. Hooopp aşağıdaki beklenmedik ama olası hatayla yüzyüze geldiniz…
“An unhandled exception of type ‘System.InvalidOperationException’ occurred in System.ServiceModel.dll
Additional information: İlgili sözleşme için birden fazla bitiş noktası yapılandırması bulunduğundan ‘…’ sözleşmesi bitiş noktası yapılandırma bölümü yüklenemedi. Tercih edilen bitiş noktası yapılandırması bölümünü adıyla belirtin.”
Hatamızın görsel halinide görelim…
Web Service – Endpoint Hatasını Nasıl Düzelteceğiz?
Bu işin sırrı App.config dosyasında saklı 🙂
İlgili dosyayı açarsak aşağıdaki gibi bir kod bloğuyla karşılacağız.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="GlobalWeatherSoap" /> </basicHttpBinding> <customBinding> <binding name="GlobalWeatherSoap12"> <textMessageEncoding messageVersion="Soap12" /> <httpTransport /> </binding> </customBinding> </bindings> <client> <endpoint address="http://www.webservicex.net/globalweather.asmx" binding="basicHttpBinding" bindingConfiguration="GlobalWeatherSoap" contract="ServiceReference1.GlobalWeatherSoap" name="GlobalWeatherSoap" /> <endpoint address="http://www.webservicex.net/globalweather.asmx" binding="customBinding" bindingConfiguration="GlobalWeatherSoap12" contract="ServiceReference1.GlobalWeatherSoap" name="GlobalWeatherSoap12" /> </client> </system.serviceModel> </configuration>
Tabi sizin projenizin kapsam ve çalışmasına göre App.config dosyası şişecektir. Haliyle ben en basit haldeki App.config dosyası üzerinde sizlere çözümü anlatıyor olacağım.
“client” node’ına dikkat ederseniz eğer içinde “endpoint” nodeları mevcut. Hatamız buradan kaynaklanmaktadır. Bir Web Service’i sadece bir “endpoint” nodeına tanımlamamız gerekmektedir. Yukarıda gördüğünüz gibi(ki sizde de aynı tablo mevcut) aynı Web Service birden fazla endpoint ile tanımlanmıştır.
Burada yapmamız gereken işlem bir Web Service’e bir adet “endpoint” kalacak şekilde sadeleştirmektir. Yani kastettiğim durumu aşağıdaki gibi güncellememiz gerekmektedir.
... ... ... <client> <endpoint address="http://www.webservicex.net/globalweather.asmx" binding="basicHttpBinding" bindingConfiguration="GlobalWeatherSoap" contract="ServiceReference1.GlobalWeatherSoap" name="GlobalWeatherSoap" /> </client> ... ... ...
Gördüğünüz gibi “http://www.webservicex.net/globalweather.asmx” Web Service’ini sadece tek bir endpoint tutacak hale getirdim.
Projeyi derleyip çalıştırdığımız zaman hatanın ortadan kalktığını göreceksiniz…
Hepinize iyi çalışmalar dilerim…
Sonraki yazılarda görüşmek üzere…
Çok teşekkürler