У меня есть сайт, на котором пользователи могут олицетворять/аутентифицировать себя на удаленном сервере и управлять определенными службами Windows. Это работает отлично, если я бегу проект локально, но когда я публиковать проекта на Web Server, имеющего IIS сервера работает, это дает исключение:Не удалось получить доступ к удаленным службам Windows
Не удалось открыть Control Service Менеджер на компьютере (имя компьютера). Для этой операции могут потребоваться другие привилегии.
Моя работа:
Класс, который подражает (хорошо работает локально):
public class ImpersonationUtil { public static bool Impersonate() { string logon = "ADMIN"; string password = "PASS"; string domain = "THEDOMAIN"; IntPtr token = IntPtr.Zero; IntPtr tokenDuplicate = IntPtr.Zero; WindowsImpersonationContext impersonationContext = null; if (LogonUser(logon, domain, password, 2, 0, ref token) != 0) if (DuplicateToken(token, 2, ref tokenDuplicate) != 0) impersonationContext = new WindowsIdentity(tokenDuplicate).Impersonate(); return (impersonationContext != null); } [DllImport("advapi32.dll", CharSet = CharSet.Auto)] public static extern int LogonUser(string lpszUserName, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); [DllImport("advapi32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)] public extern static int DuplicateToken(IntPtr hToken, int impersonationLevel, ref IntPtr hNewToken); }
код для подключения к услугам:
ServiceController controller = new ServiceController("serviceName", "machineAddress"); var status = controller.Status;
Web .config stuff (To rea d и принять олицетворения на веб-сервере):
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
помощь?
это выглядит как asp.net, а не классический – John
да @ John Я исправил его ... Любая помощь по моему вопросу? –