我使用Active RDP会话视图创建ASP.NET应用程序。
此代码在我的本地计算机上的Visual Studio中执行时成功返回会话但是当我在IIS上部署它时返回的List是空的并且没有抛出任何异常。
C#Console Application中的相同代码工作正常。
有什么建议吗?
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;
}