ASP.NET Web API melakukan negosiasi konten secara default - akan mengembalikan XML atau JSON atau jenis lain berdasarkan Accept
header. Saya tidak membutuhkan / menginginkan ini, apakah ada cara (seperti atribut atau sesuatu) untuk memberi tahu Web API untuk selalu mengembalikan JSON?
asp.net-mvc
asp.net-web-api
Borek Bernard
sumber
sumber
GlobalConfiguration.Configuration.Formatters
Jawaban:
Hanya mendukung JSON di ASP.NET Web API - CARA YANG BENAR
Ganti IContentNegotiator dengan JsonContentNegotiator:
Implementasi JsonContentNegotiator:
sumber
Accept
XML akan mendapatkan JSON, dan tidak akan mendapatkan 406 ?Accept
headernya.GlobalConfiguration...Clear()
benar - benar berfungsi.Hapus semua pemformat dan tambahkan kembali formatter Json.
EDIT
Saya menambahkannya ke
Global.asax
dalamApplication_Start()
.sumber
Philip W memiliki jawaban yang benar tetapi untuk kejelasan dan solusi yang berfungsi lengkap, edit file Global.asax.cs Anda agar terlihat seperti ini: (Perhatikan saya harus menambahkan referensi System.Net.Http.Formatting ke file yang dihasilkan stok)
sumber
Ini menghapus formatter XML dan dengan demikian default ke format JSON.
sumber
Terinspirasi oleh jawaban luar biasa Dmitry Pavlov, saya mengubahnya sedikit sehingga saya dapat memasang formatter apa pun yang ingin saya terapkan.
Penghargaan untuk Dmitry.
sumber
Jika Anda ingin melakukannya hanya untuk satu metode, maka nyatakan metode Anda sebagai kembali,
HttpResponseMessage
bukanIEnumerable<Whatever>
dan lakukan:kode ini menyakitkan untuk pengujian unit tetapi itu juga mungkin seperti ini:
sumber
Ini memiliki set tajuk yang benar. Tampak sedikit lebih elegan.
sumber
Yo dapat digunakan di WebApiConfig.cs:
sumber
bagi mereka yang menggunakan OWIN
menjadi (di Startup.cs):
sumber