Aracılığıyla paylaş


Windows Communication Foundation'ı kullanmaya başlama öğreticileriyle ilgili sorunları giderme

Bu makalede , Öğretici: Windows Communication Foundation uygulamalarını kullanmaya başlama başlığı altındaki adımları izlediğinizde karşılaşabileceğiniz en yaygın sorunlar ve hatalar için çözümler sağlanır.

Sık karşılaşılan sorunlar

Sabit sürücümde proje dosyalarını bulamıyorum.

Visual Studio proje dosyalarını C:\Users\user name>\<source\repos dizinine kaydeder.

Svcutil.exe tarafından oluşturulan App.configdosyasını bulamıyorum.

Visual Studio'da Varolan Öğe Ekle penceresi varsayılan olarak yalnızca aşağıdaki uzantılara sahip dosyaları görüntüler:

  • .Cs
  • .resx
  • .Ayarlar
  • .Xsd
  • .Wsdl

Tüm dosya türlerini görüntülemek için Varolan Öğe Ekle penceresinin sağ alt köşesindeki açılan listeden Tüm Dosyalar 'ı (*.*) seçin.

Sık karşılaşılan hatalar

Hizmet uygulamasını derleme

'GettingStartedHost.Module1' içinde BC30420 'Sub Main' hatası bulunamadı.

Visual Basic uygulaması için giriş noktası yanlış. Aşağıdaki değişikliği yapın:

  1. Çözüm Gezgini penceresinde GettingStartedHost klasörünü ve ardından kısayol menüsünden Özellikler'i seçin. a. GettingStartedHost penceresinde, Başlangıç nesnesi için listeden Service.Program'ı (veya belirli uygulamanızın giriş noktasını) seçin. b. Ana menüden Dosya>Tümünü Kaydet'i seçin.

Hizmet uygulamasını çalıştırma

HTTP , '' URL'sinihttp://+:8000/GettingStarted/CalculatorService kaydedemedi. İşleminizin bu ad alanına erişim hakları yok.

Uygun erişim için Windows Communication Foundation (WCF) hizmetini yönetim ayrıcalıklarıyla barındıran işlemi başlatın:

  • Visual Studio için: Başlat menüsünde Visual Studio programını seçin ve ardından kısayol menüsünden Diğer>Yönetici olarak çalıştır'ı seçin.
  • Konsol penceresi için: Başlat menüsünde Komut İstemi'ni seçin ve ardından kısayol menüsünden Diğer>Farklı Çalıştır yöneticisi'ni seçin.
  • Windows Gezgini için: Yürütülebilir dosyayı seçin ve ardından kısayol menüsünden Yönetici olarak çalıştır'ı seçin.

İstemci uygulamasını derleme

'CalculatorClient', '<yöntem adı>' için bir tanım içermiyor ve '<CalculatorClient' türünün ilk bağımsız değişkenini kabul eden 'yöntem adı>' uzantı yöntemi bulunamadı (using yönergesi veya derleme başvurusu eksik mi?)

Yalnızca özniteliğiyle ServiceOperationAttribute işaretlediğiniz yöntemler genel kullanıma sunulur. Arabirimindeki ServiceOperationAttribute bir yöntemden ICalculator özniteliğini atlarsanız, derleme sırasında bu hata iletisini alırsınız.

'CalculatorClient' türü veya ad alanı adı bulunamadı (using yönergesi veya derleme başvurusu eksik mi?)

bu hatayı,Svcutil.exe aracıyla oluşturduğunuz istemci projenize generatedProxy.cs (veya generatedProxy.vb) dosyasını eklemezseniz alırsınız.

İstemci uygulamasını çalıştırma

İşlenmeyen Özel Durum: System.ServiceModel.EndpointNotFoundException: 'http://localhost:8000/GettingStarted/CalculatorService' öğesine bağlanılamadı. TCP hata kodu 10061: Hedef makine etkin olarak reddettiğinden bağlantı yapılamadı.

İstemci uygulamasını hizmeti başlatmadan çalıştırırsanız bu hata oluşur. İlk olarak, hizmeti başlatmak için konak uygulamasını çalıştırın ve ardından istemci uygulamasını çalıştırın.

Svcutil.exe aracını kullanma

'Svcutil' iç veya dış komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor.

Svcutil.exe sistem yolunda olmalıdır. En kolay çözüm Visual Studio komut istemini kullanmaktır. Başlatmenüsünden Visual Studio <sürüm dizinini ve ardından VS sürümü>>için Geliştirici Komut İstemi'ni <seçin. Bu komut istemi, Visual Studio'nun bir parçası olarak gönderilen tüm araçlar için sistem yolunu doğru konumlara ayarlar.

Hizmeti ve istemci uygulamalarını çalıştırma

System.ServiceModel.Security.SecurityNegotiationException: '' hedefihttp://localhost:8000/GettingStarted/CalculatorService için 'http://localhost:8000/GettingStarted/CalculatorService' ile SOAP güvenlik anlaşması başarısız oldu

Bu hata, ağ bağlantısı olmayan etki alanına katılmış bir bilgisayarda oluşur. Bilgisayarınızı ağa bağlayın veya hem hizmet hem de istemci için güvenliği kapatın.

Güvenliği kapatmak için:

  • Hizmet için öğesini oluşturan WSHttpBinding kodu aşağıdaki kodla değiştirin:

    // Step 3: Add a service endpoint.
    selfhost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(SecurityMode.None), "CalculatorService");  
    
  • İstemci için, yapılandırma dosyasında bağlama> öğesinin<<altındaki güvenlik> öğesini aşağıdaki gibi güncelleştirin:

    <binding name="WSHttpBinding_ICalculator">
      <security mode="None" />
    </binding>
    

Ayrıca bkz.

WCF uygulamalarını kullanmaya başlama
WCF sorunlarını giderme hızlı başlangıcı
Kurulum sorunlarını giderme