Показаны сообщения с ярлыком Exceptions. Показать все сообщения
Показаны сообщения с ярлыком Exceptions. Показать все сообщения
пятница, 22 декабря 2017 г.
четверг, 21 декабря 2017 г.
Класс Exception, Exception.SerializeObjectState Event
Класс Exception
https://msdn.microsoft.com/ru-ru/library/system.exception(v=vs.110).aspx
Exception.SerializeObjectState
https://msdn.microsoft.com/ru-ru/library/system.exception.serializeobjectstate(v=vs.110).aspx
using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; public class Example { public static void Main() { bool serialized = false; var formatter = new BinaryFormatter(); Double[] values = { 3, 2, 1 }; Double divisor = 0; foreach (var value in values) { try { BadDivisionException ex = null; if (divisor == 0) { if (! serialized) { // Instantiate the exception object. ex = new BadDivisionException(0); // Serialize the exception object. var fs = new FileStream("BadDivision1.dat", FileMode.Create); formatter.Serialize(fs, ex); fs.Close(); Console.WriteLine("Serialized the exception..."); } else { // Deserialize the exception. var fs = new FileStream("BadDivision1.dat", FileMode.Open); ex = (BadDivisionException) formatter.Deserialize(fs); // Reserialize the exception. fs.Position = 0; formatter.Serialize(fs, ex); fs.Close(); Console.WriteLine("Reserialized the exception..."); } throw ex; } Console.WriteLine("{0} / {1} = {1}", value, divisor, value/divisor); } catch (BadDivisionException e) { Console.WriteLine("Bad divisor from a {0} exception: {1}", serialized ? "deserialized" : "new", e.Divisor); serialized = true; } } } } [Serializable] public class BadDivisionException : Exception { // Maintain an internal BadDivisionException state object. [NonSerialized] private BadDivisionExceptionState state = new BadDivisionExceptionState(); public BadDivisionException(Double divisor) { state.Divisor = divisor; HandleSerialization(); } private void HandleSerialization() { SerializeObjectState += delegate(object exception, SafeSerializationEventArgs eventArgs) { eventArgs.AddSerializedState(state); }; } public Double Divisor { get { return state.Divisor; } } [Serializable] private struct BadDivisionExceptionState : ISafeSerializationData { private Double badDivisor; public Double Divisor { get { return badDivisor; } set { badDivisor = value; } } void ISafeSerializationData.CompleteDeserialization(object deserialized) { var ex = deserialized as BadDivisionException; ex.HandleSerialization(); ex.state = this; } } } // The example displays the following output: // Serialized the exception... // Bad divisor from a new exception: 0 // Reserialized the exception... // Bad divisor from a deserialized exception: 0 // Reserialized the exception... // Bad divisor from a deserialized exception: 0
UnhandledException
Событие AppDomain.UnhandledException
https://msdn.microsoft.com/ru-ru/library/system.appdomain.unhandledexception(v=vs.110).aspx
пятница, 11 декабря 2015 г.
SignalR Connection Exceptions
System.TimeoutExceptionSystem.Net.Sockets.SocketException (0x80004005)System.Net.Sockets.Socket.EndConnectSystem.Net.ServicePoint.ConnectSocketInternal
System.Net.Sockets.SocketException (0x80004005):
Удаленный хост принудительно разорвал существующее подключение
в System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
в System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
|
четверг, 11 декабря 2014 г.
воскресенье, 7 декабря 2014 г.
среда, 26 ноября 2014 г.
вторник, 2 сентября 2014 г.
Exception Handling in WebAPI
http://www.codeproject.com/Articles/733512/Exception-Handling-in-WebAPI
http://weblogs.asp.net/fredriknormen/asp-net-web-api-exception-handling
Форматтеры: Удаление xmlFormattera
public static class WebApiConfig
{
public static void Register(System.Web.Http.HttpConfiguration config)
{
//Route Configuration
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}"
);
//Only JSON OUPUT
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault
(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
}
Main with SelHost
class Program
{
public static void Main()
{
var config = new System.Web.Http.SelfHost.HttpSelfHostConfiguration("http://Localhost:8080");
WebApiConfig.Register(config);
using (var server = new System.Web.Http.SelfHost.HttpSelfHostServer(config))
{
server.OpenAsync().Wait();
Console.WriteLine("Press Enter to quit.");
Console.ReadLine();
}
}
}
Подписаться на:
Сообщения (Atom)