Исключение тайм-аута HttpRequest при выполнении http-запроса от класса, унаследованного от System.Configuration.Install.Installer - PullRequest
0 голосов
/ 02 августа 2011

Я хочу запустить EXE после завершения установки, поэтому я написал пользовательское условие запуска, как показано ниже:

    [RunInstaller(true)]
        public class InstallerClass : System.Configuration.Install.Installer
        {    
            public InstallerClass() : base()
            {            
                this.AfterInstall += new InstallEventHandler(InstallerClass_AfterInstall);
            }        
            void InstallerClass_AfterInstall(object sender, InstallEventArgs e)
            {
                Directory.SetCurrentDirectory(
                Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
                ProcessStartInfo psi = new ProcessStartInfo(
                Path.GetDirectoryName(
                Assembly.GetExecutingAssembly().Location) + "\\MyApp.exe");

                psi.WorkingDirectory = Path.GetDirectoryName(
                Assembly.GetExecutingAssembly().Location);
                psi.Verb = "runas";

                Process p = new Process();
                p.StartInfo = psi;

                p.Start();            
            }        
.
.
.        }

Проблема: MyApp.exe создает http-запрос для получения данных с сервера. Я получаю исключение тайм-аута каждый раз, когда MyApp.exe запускается здесь Если я запускаю MyApp.exe отдельно, он успешно создает http-запрос без тайм-аута. Ниже приведен код для http запроса:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Timeout = TimeOut;                    
request.Credentials = CredentialCache.DefaultCredentials;
request.Proxy = WebRequest.DefaultWebProxy;
request.UseDefaultCredentials = true;
request.AllowAutoRedirect = true;
request.KeepAlive = false;
request.Method = "HEAD";
request.SendChunked = true;                    

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
returnValue = response.StatusCode;
}

Почему я получаю исключение тайм-аута? Где я делаю не так?

1 Ответ

1 голос
/ 02 августа 2011

Когда программа установки запускается, она запускается со специальными разрешениями / правами ...

Возможно, вы могли бы записать значения request.Credentials = CredentialCache.DefaultCredentials; и request.Proxy = WebRequest.DefaultWebProxy; при успешной работе в сравнении с тайм-аутом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...