Pertanyaan Bagaimana cara mengembalikan HTTP 429?


Saya menerapkan API menggunakan WCF dan spesifikasi mengatakan untuk mengembalikan HTTP 429 dalam keadaan tertentu.

Biasanya saya hanya menulis:

throw new WebFaultException(HttpStatusCode.NotFound);

Namun enum HttpStatusCode tidak mengandung 429.

Saya jelas bisa membuang ke enum

throw new WebFaultException((HttpStatusCode)429);

Namun saya khawatir bahwa ini tidak akan menghasilkan hasil yang benar untuk aplikasi yang memanggil API saya.

Apa cara terbaik untuk membuat memperpanjang HttpStatusCode dan mengirim valid (tetapi tidak didukung) status HTTP?


32
2018-03-25 13:50


asal


Jawaban:


Dari C # Language Specification 5.0:

Kumpulan nilai yang dapat diterima oleh tipe enum tidak dibatasi oleh   anggota enum. Secara khusus, nilai apa pun dari jenis yang mendasari suatu   enum dapat dilemparkan ke enum type dan merupakan nilai valid yang berbeda   tipe enum itu.

Jadi ini benar-benar baik untuk dilakukan dan akan menjadi taruhan terbaik Anda:

throw new WebFaultException((System.Net.HttpStatusCode)429);

27
2018-03-25 20:18



Jika Anda menyelenggarakan layanan WCF dengan IIS, Anda dapat mengaktifkannya Mode Kompatibilitas ASP.Net. Dengan melakukan itu Anda dapat mengatur status HttpContext.Current.Response.StatusCode ke 429.

Dengan kata itu. Saya pikir taruhan terbaik Anda adalah mencoba mentransmisikan 429 ke HttpStatusCode dan melihat apa yang terjadi. Jika itu berhasil maka Anda bisa menyelamatkan diri Anda dari sakit kepala.


0
2018-03-25 19:16