Как WhoAmIRequest возвращал пользователя SYSTEM

Столкнулся на днях с интересной проблемой: несмотря на то, что в конфиге приложения выставлены необходимые настройки, запрос WhoAmIRequest всегда возвращал данные системного пользователя CRM - SYSTEM.

...
 <system.web>
    ...
    <authentication mode="Windows"/>
    <identity impersonate="true"/>
    ...
 </system.web>
 ...

Как оказалось, причина была в следующем - WhoAmIRequest выполнялся в методе DoTheJobInThread() в отдельном потоке:

static void Main()
{
    ...
    ParameterizedThreadStart threadStart = new ParameterizedThreadStart(DoTheJobInThread);

    thread.Start(threadParam);
    ...
}

private void DoTheJobInThread(param)
{
    ...
    
    // вернёт пользователя SYSTEM
    WhoAmIResponse user = (WhoAmIResponse)crmService.Execute(new WhoAmIRequest());

    ...
}

Проблема решилась выносом метода с получением идентификатора пользователя в основной поток приложения:

static void Main()
{
    ...
    ParameterizedThreadStart threadStart = new ParameterizedThreadStart(DoTheJobInThread);

    // вернёт имперсонированного пользователя
    WhoAmIResponse user = (WhoAmIResponse)crmService.Execute(new WhoAmIRequest());
    
    // передаём пользователя в поток с параметрами метода
    threadParam.UserId = user.UserId;
    
    thread.Start(threadParam);
    ...
}

Кстати, пока искал решение, нашёл вот такой интересный способ получения идентификатора текущего пользователя:

SELECT systemuserid FROM FilteredSystemUser WHERE domainname = SUSER_SNAME()
Ваша оценка: Пусто Средняя: 4.9 (27 votes)

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".

Подробнее о форматировании

Image CAPTCHA
Enter the characters shown in the image.
Работает на Drupal, система с открытым исходным кодом.