2010-09-28 5 views
1

Dans mon programme, il y a une page aspx qui contient le client wcf, qui appelle ainsi le service wcf situé sur le même serveur."Thread was avorted" dans le service WCF Appelez

Je recevrais cette exception quand mon client wcf appelle le service wcf hébergé dans IIS sur le serveur de production.

Ex. msg: Thread was being aborted.

pile Ex:

à System.Net.UnsafeNclNativeMethods.OSSOCK.recv (IntPtr SocketHandle, Byte * pinnedBuffer, Int32 len, SocketFlags SocketFlags) à System.Net.Sockets.Socket .Receive (Byte [] tampon, décalage Int32, taille Int32 , SocketFlags socketFlags, SocketError & errorCode) à System.Net.Sockets.NetworkStream.Read (Byte [] tampon, décalage Int32, taille Int32) à System.Net .PooledStream.Read (Byte [] buffer, offset Int32 , taille Int32) sur System.Net.Connection.S yncRead (HttpWebRequest demande, Boolean userRetrievedStream, Boolean probeRead) à System.Net.ConnectStream.ProcessWriteCallDone (ConnectionReturnResult ReturnResult) à System.Net.ConnectStream.CallDone (ConnectionReturnResult ReturnResult) à System.Net.ConnectStream.ResubmitWrite (ConnectStream oldStream, booléenne suppressWrite) à System.Net.HttpWebRequest.EndWriteHeaders_Part2() à System.Net.HttpWebRequest.EndWriteHeaders (Boolean async) à System.Net.HttpWebRequest.WriteHeadersCallback (WebExceptionStatus ErrorStatus, le flux d'ConnectStream, async Boolean) à System.Net.ConnectStream.WriteHeaders (Boolean async) à System.Net.HttpWebRequest.EndSubmitRequest() à System.Net.HttpWebRequest.GetResponse() à System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan timeout) à System.ServiceModel.Channels.RequestChannel .Request (message d'un message, temporisation TimeSpan) à System.ServiceModel.Dispatcher.RequestChannelBinder.Request (message un message , délai d'TimeSpan) à System.ServiceModel.Channels.ServiceChannel.Call (action de cordes unidirectionnel booléenne, l'opération ProxyOperationRuntime , Object [] ins, Object [] outs, TimeSpan timeout) à System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, opération ProxyOperationRuntime) à System.ServiceModel.Channels.ServiceChannelProxy.Invoke (message IMessage ) à System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & MSGDATA, le type Int32) à StationService.IStationService. GetCurrentStationTrack (String StationID) à StationService.StationServiceClient.GetCurrentStationTrack (String StationID) à GetSongJS.getMarq (String radioIdentifier) ​​

J'utilisant PRTG ipmonitor et il me donner trop de demandes sur "demandes actuelles" sens ou. Mon site devient disponible dans le navigateur. Si un supprimer cette page qui appelle le service tout va être OK.

Répondre

2

Y a-t-il un appel Response.Redirect(url) après l'appel du proxy client?La surcharge d'un seul argument met fin au thread en cours, ce qui entraîne la présence de plusieurs de ces types d'erreurs dans les journaux. Parfois, la page a fini de fonctionner et cela n'arrive pas, mais le passage à un autre environnement plus actif est souvent un déclencheur.

+0

Non, il n'y a pas de Response.Redirect (url) dans cette page. Il ya juste Page_Load qui appelle methos qui crée un proxy client, puis appelle sa méthode et obtient le résultat de lui. – igor

6

Il semble que vous ne fermiez pas le client WCF.

Ce que je pense qui se passe est:

  • utilisateur appelle la page ASPX
  • page ASPX appelle le service
  • retourne page ASPX à l'utilisateur
  • le client de service n'est pas fermée, donc demande est ouvert et le nombre de demandes en cours est élevé
  • éventuellement vous avez le nombre maximum de demandes ouvertes
  • le pag e attend une connexion gratuite, quand il ne reçoit pas une page ASPX timesout
  • vous obtenez alors un fil avortent exception du délai d'attente
Questions connexes