ASP.NET MVC, можно ли кодировать Response.AppendToLog в одном месте, которое будет действовать на каждый запрос? - PullRequest
0 голосов
/ 26 октября 2018

Я использую ASP.NET 4.7 и MVC5 с C # с IIS Express локально и публикуется в службах приложений Azure.

Я хочу добавить что-то вроде:

Response.AppendToLog("XXXXX Original IP = 12.12.12.12 XXXXX");

, который добавляетИсходный IP-адрес строки запроса в столбце «request» в журнале веб-сервера.

Если я добавлю это в конкретное действие «get», это будет работать нормально.Однако я не хочу добавлять этот код в каждое действие.Можно ли разместить его более централизованно, чтобы он выполнялся при каждом получении / запросе.Это может быть простой вопрос, но ответ намекает мне в настоящее время

Спасибо за любую мудрость.

РЕДАКТИРОВАТЬ: это через фильтры пользовательских действий?

 if (filterContext.HttpContext.Request.HttpMethod=="GET")
   {
     Response.AppendToLog... //I know this will not work as Response not known.
   }

1 Ответ

0 голосов
/ 26 октября 2018

Вы почти знаете ответ.Попробуйте обработать OnActionExecuted, который получит ответ.

public class CustomActionFilter : ActionFilterAttribute, IActionFilter
    {
        void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
        {
            if(filterContext.HttpContext.Request.Method == HttpMethods.Get)
            {

            }
        }

        void IActionFilter.OnActionExecuted(ActionExecutedContext context)
        {
            var response = context.HttpContext.Response;
        }
    }

Мое решение выписать текст:

filterContext.RequestContext.HttpContext.Response.AppendToLog("OrigIP");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...