Yeni bir proje geliştirilirken, asp.net çekirdek teknolojisi kullanılarak, eski proje .NET Framework 4 kullanılarak geliştirilen bir WCF servisi olabilir; yeniden yapılandırma maliyeti çok yüksek olduğundan, WCF hizmet arayüzünü çağırmak için asp.net çekirdeği kullanmak gerekir.
İlk olarak, iki yeni proje oluşturun:
ASP.NET Core 3.1 projesi: dotnet-core-call-wcf .NET Framework 4 projesi (WCF servis uygulaması): schools-wcf-service
Visual Studio 2019 bir WCF servisi oluşturmak istiyor, şablonu bulamıyor, çözüm:
Visual Studio Kurulumcu'yu açmak için Daha fazla araç ve özellik yükle. Bireysel Bileşenler sekmesini seçin, Geliştirme Faaliyetleri'ne kaydırın, Windows İletişim Temeli'ni seçin ve Değiştir'e tıklayın.
WCF aşağıdaki gibi iki arayüz oluşturur:
Arayüz uygulama kodu şöyledir:
Hizmet sözleşmesi, ilgili hizmet işlemlerinin bir koleksiyonudur ve bir arayüzde ServiceContractAttribute uyguladığımızda, ona bir hizmet sözleşmesi özniteliği veririz. Ancak böyle bir tür için, onun deyimi otomatik olarak sözleşmeli hizmet operasyonu haline gelmez ve ancak OperationContractAttribute özelliği uygulandığında, ilgili yöntem üyesi hizmet çağrısıyla erişilebilen bir hizmet operasyonu haline gelebilir.
WCF projesine başladığınızda, otomatik olarak WcfTestClient çalıştırır ve aşağıdaki şekilde gösterildiği gibi çağırmaya çalışır:
WCF hizmetlerini aramak için ASP.NET Core projelerini kullanın
Sağ tıklayın Connected Services, bağlantı eklemek istediğiniz hizmeti seçin ve aşağıdaki görselde gösterildiği gibi WCF hizmetini seçin:
Hizmet adresi dolduruldu: http://localhost:3705/Service1.svc
Olası hatalar:
WCF hizmet adresini sona kadar yazmak imkansız olduğundan, appsettings.json dosyasına aşağıdaki kodu ekleyin:
Startup.cs dosyasını düzenleyin ve WCF hizmetini aşağıdaki kodla kaydedin:
HomeController kontrolcüsündeki wcf servisini çağırın, ilk üretici enjeksiyonu, kod şöyledir:
WCF servisini aramak:
asp.net Core web sitesini çalıştırın, etki aşağıda gösterildiği gibidir:
WCF hizmetini arayüz sonucu 3 dakika sonra döndürecek şekilde değiştirmeye çalışıyoruz, ardından asp.net çekirdeği yeniden başlatarak WCF servisini çağırıyoruz ve hata şu şekildedir:
AggregateException: One or more errors occurred. (The request channel timed out attempting to send after 00:01:00. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.) Şu anda, varsayılan zaman aşımını değiştirmemiz, BasicHttpBinding bağlamasını özelleştirmemiz ve Startup.cs dosyasını aşağıdaki gibi yeniden düzenlememiz gerekiyor:
Kaynak kodu indirme:
Turistler, bu gönderinin gizli içeriğini görmek isterseniz lütfen Yanıt
|