2016-03-11 3 views
0

Я создаю приложение ASP.NET с активным просмотром сеансов RDP.Локальный компьютер и листинг IIS rdp session

Этот код успешно возвращает сеансы во время выполнения в Visual Studio на моем локальном компьютере, но когда я развертываю его в IIS, список List пуст и не возникает никаких исключений.

Тот же код в приложении консоли C# работает нормально.

Любые предложения?

public static List<TerminalSessionData> ListSessions(string ServerName) 
{ 
    IntPtr server = IntPtr.Zero; 
    List<TerminalSessionData> ret = new List<TerminalSessionData>(); 
    server = OpenServer(ServerName); 

    try 
    { 
     IntPtr ppSessionInfo = IntPtr.Zero; 

     Int32 count = 0; 
     Int32 retval = WTSEnumerateSessions(server, 0, 1, ref ppSessionInfo, ref count); 
     Int32 dataSize = Marshal.SizeOf(typeof(WTS_SESSION_INFO)); 

     Int64 current = (int)ppSessionInfo; 

     if (retval != 0) 
     { 
      for (int i = 0; i < count; i++) 
      { 
       WTS_SESSION_INFO si = (WTS_SESSION_INFO)Marshal.PtrToStructure((System.IntPtr)current, typeof(WTS_SESSION_INFO)); 
       current += dataSize; 

       ret.Add(new TerminalSessionData(si.SessionID, si.State, si.pWinStationName)); 
      } 

      WTSFreeMemory(ppSessionInfo); 
     } 
    }catch(Exception ex) 
    { 
     throw ex; 
    } 
    finally 
    { 
     CloseServer(server); 
    } 

    return ret; 
} 
+1

То есть возвращаемое значение ('retval') на сервере? У вас есть соответствующие разрешения? Что произойдет, если вы временно запустите сайт с правами администратора? –

+0

Включен IIS с правами администратора. – corso

ответ

0

enter image description here

мне пришлось включить Персонификация и введите логин администратора/пасс

+0

Запуск приложения IIS с правами администратора недостаточно – corso

Смежные вопросы