Bagikan melalui


Tutorial Memecahkan masalah Mulai menggunakan Windows Communication Foundation

Artikel ini menyediakan solusi untuk masalah dan kesalahan paling umum yang mungkin Anda hadapi saat mengikuti langkah-langkah dalam Tutorial: Mulai menggunakan aplikasi Windows Communication Foundation.

Masalah umum

Saya tidak dapat menemukan file proyek di hard drive saya.

Visual Studio menyimpan file proyek di C:\Users\<user name>\source\repos.

Saya tidak dapat menemukan file App.config yang dihasilkan oleh Svcutil.exe.

Di Visual Studio, jendela Tambahkan Item yang Ada hanya menampilkan file dengan ekstensi berikut secara default:

  • .cs
  • .resx
  • .settings
  • .xsd
  • .wsdl

Untuk menampilkan semua jenis file, pilih Semua File (*.*) di daftar drop-down di pojok kanan bawah jendela Tambahkan Item yang Ada.

Kesalahan umum

Mengompilasi aplikasi layanan

Kesalahan BC30420 'Sub Main' tidak ditemukan di 'GettingStartedHost.Module1'.

Titik masuk salah untuk aplikasi Visual Basic. Buat perubahan berikut:

  1. Di jendela Penjelajah Solusi, pilih folder GettingStartedHost, lalu pilih Properti dari menu pintasan. a. Di jendela GettingStartedHost, untuk Objek startup, pilih Service.Program (atau titik entri untuk aplikasi tertentu Anda) dari daftar. b. Dari menu utama, pilih File>Simpan Semua.

Jalankan aplikasi layanan

HTTP tidak dapat mendaftarkan URL 'http://+:8000/GettingStarted/CalculatorService'. Proses Anda tidak memiliki hak akses ke namespace ini.

Untuk akses yang tepat, mulai proses hosting layanan Windows Communication Foundation (WCF) dengan hak istimewa administratif:

  • Untuk Visual Studio: Pilih program Visual Studio di menu Mulai, lalu pilih Lebih Banyak>Jalankan sebagai administrator dari menu pintasan.
  • Untuk jendela konsol: Pilih Perintah di menu Mulai, lalu pilih Lainnya>Jalankan Sebagai administrator dari menu pintasan.
  • Untuk Windows Explorer: Pilih executable, lalu pilih Jalankan sebagai administrator dari menu pintasan.

Mengompilasi aplikasi klien

'CalculatorClient', tidak berisi definisi untuk '<nama metode>' dan tidak ada metode ekstensi '<nama metode>' yang menerima argumen pertama jenis 'CalculatorClient' dapat ditemukan (Apakah Anda kehilangan menggunakan direktif atau referensi rakitan?)

Hanya metode yang Anda tandai dengan atribut ServiceOperationAttribute yang diekspos secara publik. Jika Anda menghilangkan atribut ServiceOperationAttribute dari metode di antarmuka ICalculator, Anda menerima pesan kesalahan ini selama kompilasi.

Jenis atau nama namespace 'CalculatorClient' tidak dapat ditemukan (apakah Anda kehilangan menggunakan direktif atau referensi rakitan?)

Anda menerima kesalahan ini jika Anda tidak menambahkan file generatedProxy.cs (atau generatedProxy.vb) ke proyek klien saat membuatnya dengan alat Svcutil.exe.

Menjalankan aplikasi klien

Pengecualian Tidak Tertangani: System.ServiceModel.EndpointNotFoundException: Tidak dapat tersambung ke 'http://localhost:8000/GettingStarted/CalculatorService'. Kode kesalahan TCP 10061: Tidak ada koneksi yang dapat dibuat karena komputer target secara aktif menolaknya.

Kesalahan ini terjadi jika Anda menjalankan aplikasi klien tanpa memulai layanan terlebih dahulu. Pertama, jalankan aplikasi host untuk memulai layanan, lalu jalankan aplikasi klien.

Menggunakan alat Svcutil.exe

'Svcutil' tidak dikenali sebagai perintah internal atau eksternal, program yang dapat dioperasikan, atau file batch.

Svcutil.exe harus berada di jalur sistem. Solusi termudah adalah menggunakan perintah Visual Studio. Dari menu Mulai, pilih versi Visual Studio <> direktori , lalu pilih versi Perintah Pengembang untuk VS<>. Perintah ini mengatur jalur sistem ke lokasi yang benar untuk semua alat yang dikirim sebagai bagian dari Visual Studio.

Menjalankan layanan dan aplikasi klien

System.ServiceModel.Security.SecurityNegotiationException: Negosiasi keamanan SOAP dengan 'http://localhost:8000/GettingStarted/CalculatorService' untuk target 'http://localhost:8000/GettingStarted/CalculatorService' gagal

Kesalahan ini terjadi pada komputer yang bergabung dengan domain yang tidak memiliki konektivitas jaringan. Sambungkan komputer Anda ke jaringan atau nonaktifkan keamanan untuk layanan dan klien.

Untuk menonaktifkan keamanan:

  • Untuk layanan, ganti kode yang membuat WSHttpBinding dengan kode berikut:

    // Step 3: Add a service endpoint.
    selfhost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(SecurityMode.None), "CalculatorService");  
    
  • Untuk klien, dalam file konfigurasi, perbarui elemen <keamanan> di bawah elemen <pengikatan> sebagai berikut:

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

Lihat juga

Mulai menggunakan aplikasi WCF
Mulai cepat pemecahan masalah WCF
Memecahkan masalah penyiapan