[C#] Mono WCF service 'low-level' exceptions catchen

Pagina: 1
Acties:

Onderwerpen


  • T i M
  • Registratie: April 2004
  • Laatst online: 14:13
Ik heb een WCF console applicatie gebouwd in C# en gecompiled met de Mono 2.10 compiler. De service werkt goed en benader ik vanuit een web applicatie die in PHP is gebouwd.

Op het moment dat de web applicatie de verbinding verbreekt of als er teveel requests binnenkomen bij de service dan klapt deze eruit. Ik krijg dan de volgende exceptions terug:

code:
1
2
3
4
5
6
7
8
9
10
11
12
Exception Write failure   at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x00000] in <filename unknown>:0 
  at System.Net.ResponseStream.InternalWrite (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0 
  at System.Net.ResponseStream.Write (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Channels.Http.HttpRequestContext.InternalReply (System.ServiceModel.Channels.Message msg, TimeSpan timeout) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Channels.Http.HttpRequestContext.Reply (System.ServiceModel.Channels.Message msg, TimeSpan timeout) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Dispatcher.MessageProcessingContext.Reply (Boolean useTimeout) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Dispatcher.OperationInvokerHandler.Reply (System.ServiceModel.Dispatcher.MessageProcessingContext mrc, Boolean useTimeout) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Dispatcher.OperationInvokerHandler.ProcessRequest (System.ServiceModel.Dispatcher.MessageProcessingContext mrc) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Dispatcher.BaseRequestProcessorHandler.ProcessRequestChain (System.ServiceModel.Dispatcher.MessageProcessingContext mrc) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Dispatcher.BaseRequestProcessorHandler.ProcessRequestChain (System.ServiceModel.Dispatcher.MessageProcessingContext mrc) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Dispatcher.HandlersChain.ProcessRequestChain (System.ServiceModel.Dispatcher.MessageProcessingContext mrc) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Dispatcher.BaseRequestProcessor.ProcessRequest (System.ServiceModel.Dispatcher.MessageProcessingContext mrc) [0x00000] in <filename unknown>:0


of:

code:
1
2
3
4
5
6
7
8
9
10
Unhandled Exception: System.InvalidOperationException: This XmlWriter does not accept StartTag at this state Error.
  at System.Xml.XmlTextWriter.WriteStartElement (System.String prefix, System.String localName, System.String namespaceUri) [0x00000] in <filename unknown>:0 
  at System.Xml.DefaultXmlWriter.WriteStartElement (System.String prefix, System.String localName, System.String ns) [0x00000] in <filename unknown>:0 
  at System.Xml.XmlWriter.WriteStartElement (System.String localName, System.String ns) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Logger.TraceCore (TraceEventType eventType, Int32 id, Boolean hasRelatedActivity, Guid relatedActivity, System.Object[] data) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Logger.Log (TraceEventType eventType, System.String message, System.Object[] args) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Logger.Error (System.String message, System.Object[] args) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Dispatcher.ListenerLoopManager.ProcessErrorWithHandlers (IChannel ch, System.Exception ex, System.ServiceModel.Channels.Message& res) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Dispatcher.ListenerLoopManager.ProcessRequest (IReplyChannel reply, System.ServiceModel.Channels.RequestContext rc) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Dispatcher.ListenerLoopManager.TryReceiveRequestDone (IAsyncResult result) [0x00000] in <filename unknown>:0


In de gehele applicatie worden alle mogelijke fouten opgevangen en netjes afgehandeld. Het rare is dat ik bovenstaande exceptions niet kan afvangen.

Ik heb aan het Faulted event van de ServiceHost een handler gehangen die die fouten kan opvangen. Daarnaast heb ik een ErrorHandler geimplementeerd die de IErrorHandler interface implementeerd die alle errors van de gehele applicatie moet opvangen. Het rare is dat die niet getriggerd worden in de debugger op het moment dat één van de bovenstaande fouten optreed.

Ik heb al uren gespendeerd aan het zoeken naar een antwoord op mijn vraag, maar nog geen antwoorden gevonden. Zie bijvoorbeeld deze pagina, waar twee gebruikers hetzelfde probleem hebben als ik, maar helaas geen reacties op zijn.

Ik gebruik de laatste versie van Mono en de applicatie draait op Ubuntu 11.10.

[ Voor 10% gewijzigd door T i M op 24-09-2011 16:16 ]


  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 06:48

Sebazzz

3dp

Zou dit geen bug kunnen zijn in Mono zelf?

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Dat is inderdaad mogelijk. Kan dit gereproduceerd worden met de officiële .NET-compiler en runtime van Microsoft?

We are shaping the future


Acties:
  • 0 Henk 'm!

  • T i M
  • Registratie: April 2004
  • Laatst online: 14:13
Sorry voor mijn late reactie. Ik ben inmiddels iets verder gekomen. De tweede exception die in de TS staat die heb ik inmiddels kunnen afvangne. De exception werd niet afgevangen in de debugger, ik had de output nog op Release staan (oops). De eerste error kan ik echter niet reproduceren als ik mijn solution build in VS 2008 en draai op Windows. Waarschijnlijk een bug in Mono.