İsteklerin kimliğini doğrulamak için OAuth / belirteç kimlik doğrulamasını kullanan bir MVC webapi sitem var. İlgili tüm denetleyiciler doğru özniteliklere sahiptir ve kimlik doğrulama sorunsuz çalışıyor.
Sorun, tüm talebin bir öznitelik kapsamında yetkilendirilememesidir - bazı yetkilendirme kontrollerinin, denetleyici yöntemleri tarafından çağrılan kodda gerçekleştirilmesi gerekir - bu durumda 401 yetkisiz yanıtı döndürmenin doğru yolu nedir?
Denedim throw new HttpException(401, "Unauthorized access");, ancak bunu yaptığımda yanıt durum kodu 500 ve ayrıca bir yığın izleme alıyorum. DelegatingHandler günlüğümüzde bile yanıtın 401 değil 500 olduğunu görebiliriz.
HttpResponseExceptionbirUnauthorized(). 'Beklenen' bir hata için istisnayı kullanmak biraz anti-modeldir, bu nedenle, aramanın bu hatayı yapmasını beklediğiniz durumlar varsa, geri dönmekUnauthorized()muhtemelen doğru aramadır. KaydetHttpResponseExceptiongerçekten beklenmedik için.