Windows服务突然停止

时间:2017-12-26 11:06:09

标签: c# webclient

我有一个Windows服务应用程序,它将一些消息发送到另一个Web服务(实习生作为电子邮件发送)并从服务器下载响应。

最近,服务在几天内停止了一次。 (尽管包含异常处理仍然没有被捕获并且服务崩溃)。

登录事件查看器的异常如下:

  

框架版本:v4.0.30319描述:该过程已终止   由于未处理的异常。异常信息:System.Net.WebException   堆栈:at   System.Net.ServicePointManager.FindServicePoint(的System.Uri,   System.Net.IWebProxy,System.Net.ProxyChain ByRef,   System.Net.HttpAbortDelegate ByRef,Int32 ByRef)at   System.Net.HttpWebRequest.FindServicePoint(Boolean)at   System.Net.HttpWebRequest.get_ServicePoint()at   System.Net.AuthenticationState.PrepareState(System.Net.HttpWebRequest)   在   System.Net.AuthenticationState.ClearSession(System.Net.HttpWebRequest)   在System.Net.HttpWebRequest.ClearAuthenticatedConnectionResources()
  在System.Net.HttpWebRequest.Abort(System.Exception,Int32)at   System.Net.HttpWebRequest.AbortWrapper(System.Object)at   System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()   在System.Threading.ThreadPoolWorkQueue.Dispatch()at   System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

我搜索了很多但找不到合适的答案。     任何帮助,将不胜感激。使用的代码:

public class DataAPIWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri uri)
    {
        WebRequest w = base.GetWebRequest(uri);
        w.Timeout = 60000;
        return w;
    }
}

public string Send(string path)
{
    try
    {
        using (DataAPIWebClient webClient = new DataAPIWebClient())
        {
            webClient.Credentials = new NetworkCredential("XXX", "YYY");
            string reply = webClient.DownloadString(path);
            return reply;
        }
    }
    catch (WebException)
    {
        throw;
    }
}

1 个答案:

答案 0 :(得分:4)

这是你的问题

catch (WebException)
{
    throw;
}

你只是重新抛出你的异常,它永远不会被抓住,你永远不知道错误是什么,所以服务别无选择,只能崩溃

我可以建议

catch (WebException ex)
{
    Log.Error(ex);
    // Or write it to a file or something
}
  

编辑:正如评论中所述,这不是解决方案,   但是你错过了那个堆栈中的实际异常消息   由于未捕获的异常导致的痕迹,然而它的未被捕获   导致服务崩溃的异常