Bagikan melalui


Kesalahan

Bagian ini menguraikan kesalahan yang mungkin menjadi masalah oleh fungsi Windows Web Services akibat kegagalan untuk menjalankan perintah.

Parameter Keluar

Sebagai aturan umum, nilai parameter keluar tidak dimodifikasi jika fungsi gagal.

Ada beberapa instans di mana parameter keluar dimodifikasi jika fungsi gagal. Kasus-kasus ini secara eksplisit dipanggil dalam dokumentasi untuk setiap parameter. Jika dokumentasi tidak menyebutkan apa pun tentang memodifikasi parameter dalam kasus kegagalan, maka Anda dapat dengan aman mengasumsikan bahwa fungsi tidak akan memodifikasinya.

Kode Kesalahan

Semua kode pengembalian kesalahan adalah HRESULTs. API ini mendefinisikan sekumpulan HRESULT dalam rentang FACILITY_WEBSERVICES, tetapi juga mengembalikan kesalahan yang ditentukan di tempat lain di Windows API.

Lihat dokumentasi untuk API tertentu untuk mempelajari kode kesalahan mana yang dikembalikan. Daftar ini tidak dimaksudkan untuk lengkap untuk setiap API, melainkan daftar kode kesalahan yang ada skenario umum untuk penanganan eksplisit. Pemanggil harus selalu mengasumsikan kode kesalahan lain dimungkinkan dari API apa pun.

API ini mendefinisikan sejumlah kecil kode kesalahan, yang sesuai dengan skenario di mana program akan ingin mengambil tindakan berdasarkan kesalahan. Kode kesalahan saja mungkin tidak cukup untuk menentukan apa yang salah, atau untuk memberikan deskripsi yang baik tentang masalah kepada pengguna. Pemahaman terbaik tentang masalah berasal dari penggunaan Kesalahan Kaya, seperti yang dijelaskan di bawah ini.

Kesalahan Kaya

Selain mengembalikan kode kesalahan, penelepon dapat secara opsional meminta informasi kesalahan yang kaya untuk panggilan API apa pun dengan meneruskan objek WS_ERROR non-NULL. Untuk membuat objek kesalahan, gunakan WsCreateError. Jika ada kesalahan, maka API yang menyebabkan kesalahan akan mengisi objek kesalahan dengan konteks tambahan tentang situasi kesalahan. Jika tidak ada kesalahan, maka objek kesalahan tidak dimodifikasi. Meneruskan objek kesalahan NULL menunjukkan bahwa pemanggil tidak tertarik dengan informasi kesalahan yang kaya. Callees (termasuk panggilan balik) harus disiapkan untuk menangani objek kesalahan NULL .

Perhatikan bahwa objek kesalahan yang sama dapat digunakan untuk beberapa panggilan API, tetapi hanya dapat digunakan untuk satu panggilan API sekaligus (karena merupakan utas tunggal). Setiap kali terjadi kesalahan, informasi kesalahan ditambahkan ke objek kesalahan. Saat rantai panggilan melepas lelah, beberapa fungsi dapat menambahkan informasi ke objek kesalahan untuk memberikan konteks tambahan tentang kesalahan tersebut. Untuk menghapus konten objek kesalahan sebelum menggunakannya kembali (setelah kesalahan terjadi), gunakan WsResetError. Jika tidak ada kesalahan yang terjadi, tidak perlu mengatur ulang objek kesalahan sebelum menggunakannya kembali.

Informasi kesalahan yang kaya terdiri dari hal-hal berikut:

Kesalahan dan Kesalahan

Lihat Kesalahan untuk informasi tentang bagaimana kesalahan dan kesalahan terkait.

Informasi Kesalahan Sensitif Bahasa

Saat membuat objek kesalahan, LANGID dari terjemahan bahasa yang diinginkan untuk informasi kesalahan ditentukan. Ini digunakan saat menambahkan informasi kesalahan ke objek kesalahan.

Nilai bahasa ini dapat diambil atau diatur menggunakan WS_ERROR_PROPERTY_LANGID.

Kode Kesalahan Kanonis

API ini menyediakan serangkaian kode kesalahan kanonis (WS_E_*) yang memungkinkan berbagai teknologi komunikasi digunakan tanpa harus bergantung pada kode kesalahan tertentu dari implementasi khusus yang mendasar. Untuk daftar lengkap kode kesalahan ini, lihat Windows Web Services Mengembalikan Nilai.

Ini memungkinkan, misalnya, program untuk memeriksa kode kesalahan WS_E_ENDPOINT_NOT_FOUND apakah menggunakan TCP, UDP, atau HTTP, dan mengambil beberapa tindakan (seperti mencoba menggunakan titik akhir yang berbeda).

Ketika kode kesalahan spesifik implementasi dipetakan ke kesalahan kanonis, kode kesalahan asli disimpan dalam objek kesalahan, dan mungkin masih diakses untuk tujuan diagnostik. Lihat WS_ERROR_PROPERTY_ORIGINAL_ERROR_CODE untuk informasi selengkapnya.

Penggunaan API Tidak Valid

Kode kesalahan berikut dicadangkan untuk penggunaan API yang tidak valid, dan tidak akan dikembalikan dalam keadaan lain. Jika salah satu kesalahan ini dikembalikan, itu mungkin merupakan indikasi bug aplikasi.

  • WS_E_INVALID_OPERATION
  • E_INVALIDARG

Enumerasi berikut adalah bagian dari pelacakan:

Kode kesalahan berikut adalah bagian dari pelacakan:

  • CERT_E_CN_NO_MATCH
  • CERT_E_EXPIRED
  • CERT_E_UNTRUSTEDROOT
  • CERT_E_WRONG_USAGE
  • CRYPT_E_REVOCATION_OFFLINE
  • E_INVALIDARG
  • E_OUTOFMEMORY
  • WS_E_ADDRESS_IN_USE
  • WS_E_ADDRESS_NOT_AVAILABLE
  • WS_E_ENDPOINT_ACCESS_DENIED
  • WS_E_ENDPOINT_ACTION_NOT_SUPPORTED
  • WS_E_ENDPOINT_DISCONNECTED
  • WS_E_ENDPOINT_FAILURE
  • WS_E_ENDPOINT_FAULT_RECEIVED
  • WS_E_ENDPOINT_NOT_AVAILABLE
  • WS_E_ENDPOINT_NOT_FOUND
  • WS_E_ENDPOINT_TOO_BUSY
  • WS_E_ENDPOINT_UNREACHABLE
  • WS_E_INVALID_ENDPOINT_URL
  • WS_E_INVALID_FORMAT
  • WS_E_INVALID_OPERATION
  • WS_E_NOT_SUPPORTED
  • WS_E_NO_TRANSLATION_AVAILABLE
  • WS_E_NUMERIC_OVERFLOW
  • WS_E_OBJECT_FAULTED
  • WS_E_OPERATION_ABANDONED
  • WS_E_OPERATION_ABORTED
  • WS_E_OPERATION_TIMED_OUT
  • WS_E_OTHER
  • WS_E_PROXY_ACCESS_DENIED
  • WS_E_PROXY_FAILURE
  • WS_E_PROXY_REQUIRES_BASIC_AUTH
  • WS_E_PROXY_REQUIRES_DIGEST_AUTH
  • WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH
  • WS_E_PROXY_REQUIRES_NTLM_AUTH
  • WS_E_QUOTA_EXCEEDED
  • WS_E_SECURITY_SYSTEM_FAILURE
  • WS_E_SECURITY_TOKEN_EXPIRED
  • WS_E_SECURITY_VERIFICATION_FAILURE
  • WS_E_SERVER_REQUIRES_BASIC_AUTH
  • WS_E_SERVER_REQUIRES_DIGEST_AUTH
  • WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH
  • WS_E_SERVER_REQUIRES_NTLM_AUTH
  • WS_S_ASYNC
  • WS_S_END

Fungsi berikut adalah bagian dari pelacakan:

Handel berikut adalah bagian dari pelacakan:

Struktur berikut adalah bagian dari pelacakan:

Keamanan

Ada sejumlah pertimbangan keamanan yang harus diperhatikan pengguna objek kesalahan:

  • Objek kesalahan mungkin berisi data yang tidak tepercaya. Contohnya adalah: WS_FAULT, dan string kesalahan, yang keduanya dapat disimpan dalam objek kesalahan berdasarkan informasi yang diterima melalui saluran yang tidak tepercaya. Pengguna objek kesalahan harus berhati-hati saat memeriksa informasi dalam objek kesalahan dan membuat keputusan berdasarkan nilainya.
  • Pengguna objek kesalahan harus memanggil WsResetError setelah memeriksa informasi tentang kesalahan. Gagal melakukannya dapat menyebabkan akumulasi memori.
  • Pengguna objek kesalahan harus sangat berhati-hati saat menggunakan nilai WS_FULL_FAULT_DISCLOSURE enumerasi WS_FAULT_DISCLOSURE , karena kesalahan yang dihasilkan dapat berisi informasi privat yang diakumulasikan sebagai bagian dari proses perekaman kesalahan.