2017-02-27 9 views
0

こんにちは、私は、Web APIのコントローラにログアウトページを持っています。私はurlを打つことができ、私はクッキーをクリアしていますが、私は応答しています。 'ObjectContent`1'タイプは、コンテンツタイプ 'application/jsonのレスポンスボディをシリアライズできませんでした。 以下は私のコードです。'ObjectContent`1'タイプで、コンテンツタイプ 'application/json'のレスポンスボディをシリアル化できませんでした。

[HttpGet] 
     [Route("~/api/auth/logout")] 
     //Log out code 
     public HttpResponseMessage Get() 
     { 

      var currentCookie = Request.Headers.GetCookies("session").FirstOrDefault(); 
      var response = Request.CreateResponse(HttpStatusCode.OK); 
      if (response!= null) 
      { 
       var cookie = new CookieHeaderValue("session", "") 
       { 
        Expires = DateTimeOffset.Now.AddDays(-1), 
        Domain = currentCookie.Domain, 
        Path = currentCookie.Path 
       }; 
       response.Headers.AddCookies(new[] { cookie }); 
       return Request.CreateResponse(HttpStatusCode.OK, response); 
      } 
      else 
      { 
      return response 
      } 
     } 

ご協力いただければ幸いです。ありがとうございました。

答えて

0

以下のようにフィルタを作成しました。

public class Action1DebugActionWebApiFilter : ActionFilterAttribute 
    { 
     public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) 
     { 
      var response = actionExecutedContext.Response; 
      var request = actionExecutedContext.Request; 

      var currentCookie = request.Headers.GetCookies("session").FirstOrDefault(); 
      if (currentCookie != null) 
      { 
       var cookie = new CookieHeaderValue("session", "") 
       { 
        Expires = DateTimeOffset.Now.AddDays(-1), 
        Domain = currentCookie.Domain, 
        Path = currentCookie.Path 
       }; 

       response.Headers.AddCookies(new[] { cookie }); 
      } 

      base.OnActionExecuted(actionExecutedContext); 
     } 
    } 

デコレートされたフィルタは以下のように動作します。

[Route("~/api/auth/logout")] 
[Action1DebugActionWebApiFilter] 
public HttpResponseMessage Get() 
{ 
    var message = string.Format("Logged Out"); 
    HttpError msg = new HttpError(message); 
    return Request.CreateResponse(HttpStatusCode.OK, msg); 
} 

作業が開始されました。

関連する問題