Elinizde Wsdl dokümanı veya adresi varsa işiniz kolay, kullandığınız visual studio versiyonuna göre değişmekle birlikte 2019 versiyonundan kendisi yüklü gelen Wcf Web Service Reference Provider‘ı download yoluyla temin etmeniz gerekiyor, sonra aşağıdaki adımları izleyerek servisi projenize ekleyebilirsiniz.
Buraya authentication sorunu yaşayanlar için çok basit bir çözüm ekleyeceğim, benim gibi farklı tipte wcf web servisine bağlanmaya (consume etmeye) çalışanlar olursa diye; iki farklı şekilde Authorization ekleyebilirsiniz;
1- Servisin wsdl dokümanına ulaştınız ve visual studio için geliştirilmiş olan wcf web service reference provider kullanarak servisi consume ettiniz, fakat http request içerisine authorization ekleyemiyorsanız;
using (new OperationContextScope(WsClient.InnerChannel))
{
if(OperationContext.Current != null)
{
var httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = {BURAYA STRING TOKEN DEĞERİ GELECEK};
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
}
// BURADAN ÇAĞRINIZI YAPABİLİRSİNİZ
}
2. Servisin wsdl dokümanı mevcut değil, soap mesajlarını kendiniz oluşturdunuz fakat http request içerisine authorization token ekleyemiyorsanız;
WebRequest webRequest = WebRequest.Create(“{{ BURAYA SERVİS ADRESİ YAZILACAK }}”);
HttpWebRequest httpRequest = (HttpWebRequest)webRequest;
httpRequest.Method = “POST”;
httpRequest.Headers.Add(“content-type”, “text/xml”);
httpRequest.Headers.Add(“user-agent”, “Hesap Co”);
httpRequest.Headers.Add(“Authorization”, string.Format(“Basic {0}”, Convert.ToBase64String(Encoding.ASCII.GetBytes(Auth.RoleName + “:” + Auth.RolePass))));
Umarım yardımcı olabilmişimdir, burada yazılanlar .net core 2.0 versiyonunda geçerlidir, 2.2 versiyonundan birçok değişiklik yapılmıştır, buraya güncellemeye yazacağım.
Sorun çözülürse bir teşekkür yazmanız yeterli.