C #: используя Watin.Core с другим пользователем (ProcessStartInfo), IIS возвращает не авторизованный - PullRequest
1 голос
/ 15 сентября 2010

Моя ситуация:

Я запускаю программу тестирования C #, которая позволяет мне настраивать определенные «шаги» браузера, такие как переход по URL или нажатие кнопки. Также есть возможность ввести домен, имя пользователя и пароль. При запуске программы она вызовет другую программу * с (если введено) именем пользователя и паролем. Эта новая программа будет запускать Internet Explorer (через Watin) и выполнять «шаги».

Проблема здесь в том, что когда я перехожу на URL, который требует определенного пользователя, он выдаст мне «Вы не авторизованы для просмотра этой страницы». Когда я вручную (Internet Explorer - Run As) авторизируюсь с одним и тем же пользователем (и я проверил учетные данные более одного раза), это даст мне авторизацию.

Что-то, что я уже проверил: при запуске страницы localhost (на которой будет отображаться текущий пользователь) я получаю авторизацию как вручную, так и автоматически через программу. Ох и: программа работает нормально, когда я не настраиваю учетные данные (она пропустит оператор if)

Код, который я использую для запуска второй программы:

System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
            if (!string.IsNullOrEmpty(Username))
            {
                System.Security.SecureString secPw = new System.Security.SecureString();
                foreach (char c in Password)
                {
                    secPw.AppendChar(c);
                }
                psi.UserName = Username;
                psi.Password = secPw;
                psi.Domain = Domain;
            }
            psi.WorkingDirectory = "c:\\temp";
            psi.FileName = Path.Combine("c:\\temp", fileName);
            psi.Arguments = xmlStepFilename;
            psi.UseShellExecute = false;
            psi.EnvironmentVariables["TMP"] = "c:\\temp";

            var process = new System.Diagnostics.Process();
            process.StartInfo = psi;
            process.Start();

Спасибо за ваше время!

(* Новая программа была реализована, поскольку Internet Explorer всегда запускался под пользователем, с которого было запущено первоначальное приложение, и было невозможно запустить Internet Explorer с другим именем пользователя / паролем, потому что Watin не поддерживал это. ..Но это не является частью проблемы)

1 Ответ

1 голос
/ 17 сентября 2010

psi.LoadUserProfile = true;это правильный ответ.Кажется, у нас есть профессионал в доме :) Спасибо командир Кин!

...