2016-08-16 2 views
0

내 WebAPI에서 잘못된 인증을 발견하면 다음을 사용합니다.WebAPI에서 401 Unerautized 반환

[HttpPost] 
    public HttpResponseMessage CustomerQuotationComplete(Guid apiKey, int EnquiryId, int SiteId, bool accepted) 
    { 
     if (IsRequestAuthorized()) 
     { 
     ... 
     } 
     else 
     { 
      var msg = new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "Bad Authentication" }; 
      throw new HttpResponseException(msg); 
     } 
    } 

실제로 302 발견 응답을 수신하고 401 인증을받지 않았습니다.

그래서 내가 뭘 잘못하고 있니?

답변

0

시도는 exeption을 thowing 대신 메시지를 반환합니다 :

var msg = new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "Bad Authentication" }; 
return msg; 
+0

에게 반환 할 수 있습니다. – Matt

+0

비슷한 코드를 사용하면 http 401을 반환합니다. [전역 필터 또는 OWIN 세부 정보]를 사용하지 않는지 확인하십시오 (http://stackoverflow.com/questions/20149750/owin-unauthorised-webapi-call- login-page-401보다는 오히려 -return-login-controller 메소드라고 불리는 다른 목적을 위해). 간단한 빈 프로젝트를 시도해보십시오. 프로젝트 설정과 관련이 있는지 확인하십시오. – bsoulier

4

당신은 인증되지 않은 응답 위와 같은 않습니다

[HttpPost] 
    public IHttpActionResult CustomerQuotationComplete(Guid apiKey, int EnquiryId, int SiteId, bool accepted) 
    { 
     if (IsRequestAuthorized()) 
     { 
     ... 
     } 
     else 
     { 
      return this.Unauthorized(); 
     } 
    } 
+0

불행히도 this.Unauthorized (Http.Results.UnauthorisedResult)를 HttpresponseMessage – Matt

+0

을 입력하면 변환 할 수 없습니다. 편집 된 예제를 참조하십시오. 반환 유형을 IHttpActionResult로 변경했습니다. –

+0

이 방법으로도 차이가 없습니다. 그것의 모든 아주 이상한, 프로젝트에서 예기치 않은 결과를 일으키는 soemthign해야합니다. – Matt

관련 문제