#c# #.net #wpf #exception #crash
Вопрос:
У меня есть приложение .net, которое выводит определенный порт после входа в систему.Я окружил логику в try catch и поймал исключение System.net.WebException в своих журналах. Но на некоторых компьютерах с Windows это приводит к случайному сбою приложения.
Error Message: WebException
Exception Type: System.Net.WebException
Error Location : Unable to connect to the remote server
InnerException: System.Net.Sockets.SocketException (0x80004005): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 127.0.0.1:9000
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socketamp; socket, IPAddressamp; address, ConnectSocketState state, IAsyncResult asyncResult, Exceptionamp; exception)
StackTrace: at System.Net.HttpWebRequest.GetRequestStream(TransportContextamp; context)
at System.Net.HttpWebRequest.GetRequestStream()
at tpsyncagent.MainWindow.<ConnectToTally>d__36.MoveNext() in C:codetpdesktopsyncagentMainWindow.xaml.cs:line 247
Это фрагмент кода
try
{
Stream dataStream = TallyRequest.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
}
catch(Exception e)
{
//logging code
}
Комментарии:
1. Вы можете проверить средство просмотра событий Windows на наличие исключения
Ответ №1:
Если вы получаете случайные сбои, попробуйте разместить обработчик исключений для всех в своем классе приложений:
protected override void OnStartup(StartupEventArgs e)
{
AppDomain.CurrentDomain.UnhandledException = CurrentDomain_UnhandledException;
... etc ...
Затем в этом обработчике сбросьте сообщение об исключении, внутреннее исключение и трассировку стека, чтобы увидеть, где оно выбрасывается. В данном конкретном случае вы знаете, что это исключение SocketException, поэтому вы также можете создать исключение для этого и проверить его свойство SocketErrorCode для получения дополнительной информации.