0

OnActionExecuting メソッドでレコードを書き込んでいますが、リクエストのステータス コードを取得するにはどうすればよいですか

LogActionAttribute : ActionFilterAttribute

    public override void OnActionExecuting(HttpActionContext filterContext)
        {

            _stopwatch.Stop();

            var controller = filterContext.RequestContext.RouteData.Values["Controller"];
            var action = filterContext.RequestContext.RouteData.Values["Action"];
            var url = filterContext.Request.RequestUri;
            var Method = filterContext.Request.Method;
            StreamReader reader = new StreamReader(HttpContext.Current.Request.InputStream);
            var statusCode = //get status code 
            var req_txt = reader.ReadToEnd();
            var requestResponseModel = new RequestResponseModel()
            {
                /* Url = request.Url.LocalPath.ToString(),
                 Method = request.HttpMethod,
                 Ip = request.UserHostAddress,
                 RequestDate = DateTime.Now,
                 Expires = response.Expires,
                 RequestParams = req_txt,
                 ContentType = request.ContentType*/

            };

            string json = JsonConvert.SerializeObject(new { id = '2', sifre = 'c' });

            //write string to file
            System.IO.File.AppendAllText(HttpContext.Current.Server.MapPath("~/Tmp/jsondata.txt"), json);


            base.OnActionExecuting(filterContext);
        }
4

1 に答える 1

0

OnActionExecuting、アクションが実行される前に実行されます。ステータス コードは、アクションの実行後にのみ意味のある情報を提供します。ステータス コードを取得できる応答オブジェクトが利用可能であっても、実際のステータス コードしか利用でき
ないため、OnActionExecutedメソッドを使用して、アクションによって設定されたステータス コードにアクセスできます。

詳しくはこちらのリンクをご覧ください。このリンクでは MVC のフィルターの動作について説明していますが、基本的なメカニズムは Web API のフィルターと同じです。

于 2019-09-05T07:47:16.553 に答える