Как заставить EventLog записывать имя пользователя в журнал событий Окна?

У меня довольно большой и болезненный опыт работы с API Facebook, и я могу заявить, что:

  • Если пакетный запрос содержит 50 запросов, то он считается 50 запросами на Facebook
  • 1 запрос! = 1 звонок. У Facebook есть собственное определение того, что такое звонок. Если ваш запрос большой, возвращает много данных или использует много процессора, он будет считаться несколькими вызовами.

Самый частый вызов API графа, который я делаю, содержит много вложенных полей, и я заметил, что достиг «600 вызовов / 600 секунд» после выполнения его только 200 раз. В общем, в моем случае это количество вызовов для 3 ...

У вас есть много других ограничений скорости, но ни один из них не задокументирован надлежащим образом ...

5
задан MatthewMartin 8 June 2009 в 15:22
поделиться

4 ответа

Я нашел запись в блоге, в которой объясняется, как это сделать, хотя, похоже, не существует полностью управляемого способа сделать это. Чтобы получить идентификатор пользователя, вы должны использовать вызовы метода pinvoke / native.

http://www.infosysblogs.com/microsoft/2007/09/logging_events_with_user_detai_1.html

Для вышесказанного он регистрирует пользователя как ASPNET или СЕТЕВЫЕ СЛУЖБЫ, или зарегистрированный пользователь для консольных приложений. Сам вызов api принимает параметр указателя на SID. Я не пытался проверить, возможен ли спуфинг.

0
ответ дан 14 December 2019 в 19:23
поделиться

Имя пользователя в журнале событий зависит от контекста, в котором работает ваше приложение. Его нельзя установить явно. Если это приложение ASP.NET, возможно, оно использует учетную запись службы.

РЕДАКТИРОВАТЬ: Я нашел аналогичный вопрос . Он предлагает использовать функцию Win32 Api ReportEvent для установки информации о пользователе.

2
ответ дан 14 December 2019 в 19:23
поделиться

Ну, пользователь - это текущий пользователь, под которым работает ваш домен приложения. Это невозможно установить, и Windows не позволит вам «обмануть» другого пользователя.

2
ответ дан 14 December 2019 в 19:23
поделиться

System.Diagnostics позволяет вашему приложению ASP.NET прямой доступ в журнал событий Windows. Поскольку ваше приложение является приложением ASP.NET, вы можете использовать

HttpContext.Current.User.Identity.Name

, чтобы получить текущее имя пользователя (в данном случае будет токен аутентификации формы, поскольку вы используете аутентификацию с помощью форм) .

1
ответ дан 14 December 2019 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: