Я создаю приложение 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;
}
То есть возвращаемое значение ('retval') на сервере? У вас есть соответствующие разрешения? Что произойдет, если вы временно запустите сайт с правами администратора? –
Включен IIS с правами администратора. – corso