C#调用URL:超时

时间:2013-06-06 19:31:46

标签: c# url .net-4.0 httpwebrequest process.start

我正在尝试编写程序的一部分,通过调用向管理员发送电子邮件的URL来通知管理员客户端数据已更新/发送。我成功地做到了这一点,但仅限于Windows 7和2003.我需要它在Windows服务器2008上运行。它还需要通过在调用url时隐藏用户的Web浏览器。如果我让浏览器窗口打开,我已成功发送电子邮件,但如果我尝试隐藏窗口,它总是会失败。 我使用的代码如下:

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url += strNewValue);
// execute the request
HttpWebResponse response = (HttpWebResponse)wr.GetResponse();

Stream resStream = response.GetResponseStream();
    response.Close();

/*   
    WebBrowser web = new WebBrowser();
        web.AllowNavigation = true;
        web.Visible = false;
        web.Navigate(url+strNewValue);
*/
/*
    ProcessStartInfo startweb = new ProcessStartInfo(url + strNewValue);
        startweb.RedirectStandardOutput = false;
        startweb.WindowStyle = ProcessWindowStyle.Hidden;
        startweb.UseShellExecute = true;
        startweb.CreateNoWindow = true;

        Process.Start(startweb);
*/

注释代码显示了我尝试使其工作的其他尝试。这段代码似乎都可以在Windows 2007和Windows Server 2003上成功运行,但我无法让它在Windows 2008 Server上运行,这是必须的。

每次进入应用程序代码的这一部分时,程序都开始不响应,最终恢复并说它已发送通知。但是,它在应用程序中此时冻结,并且永远不会发送电子邮件。我已经检查了这个URL,它在手动完成时发送电子邮件没有任何问题。我目前正在使用.NET 4.0客户端软件包,如果这可能导致任何问题。我得到的唯一错误是httpwebresponse getresponse();

的超时错误

任何建议都会非常有帮助。提前谢谢

1 个答案:

答案 0 :(得分:0)

您可以改为从System.Net.Mail命名空间配置对象,例如SmtpClient并直接发送电子邮件吗?这个解决方案在发送电子邮件时引入了一个看似不必要且复杂/容易出现故障的过程,这是一个以编程方式完成的相当简单的任务。

SmtpClient MSDN Documentation