2011-02-04 6 views
2

J'ai déjà posé cette question sans parvenir à la solution, mais comme j'ai fait beaucoup plus de tests et de débogage et que j'ai de nouvelles informations, je me suis dit que je demanderais à nouveau dans l'espoir de le fond de ceci une fois pour toutes.Silverlight 4 WCF Ria Service Timeout

Mon service de domaine expire après 1 minute. J'ai lu tous les messages et j'ai vu comment créer une classe partielle et définir explicitement des valeurs de délai, et j'ai fait exactement cela, mais je suis toujours expiré après une minute. La mise en garde à cela est qu'après avoir explicitement défini le délai d'attente dans ma classe partielle/méthode, je ne reçois plus l'erreur de délai d'attente standard. Au lieu de cela, je reçois ceci:

{System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound. at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) at System.Net.Browser.BrowserHttpWebRequest.<>c_DisplayClass5.b_4(Object sendState) at System.Net.Browser.AsyncHelper.<>c_DisplayClass2.b_0(Object sendState) --- End of inner exception stack trace --- at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state) at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)}

Voici ma classe partielle que je mets les valeurs de délai d'attente dans je déboguée cela et savoir avec certitude que ces valeurs sont définies avant de faire l'appel au service.. La méthode de service avec laquelle je travaille est TestTimeout(). Il ne fait rien d'autre que s'asseoir et attendre jusqu'à ce que l'exception ci-dessus soit levée - exactement une minute après l'appel.

public partial class MyDomainContext 
    { 
    partial void OnCreated() 
    { 
     var proxy = (WebDomainClient<MyDomainContext.IMyDomainServiceContract>)this.DomainClient; 
     proxy.ChannelFactory.Endpoint.Binding.SendTimeout = new TimeSpan(0, 5, 0); 
     proxy.ChannelFactory.Endpoint.Binding.ReceiveTimeout = new TimeSpan(0, 5, 0); 
     proxy.ChannelFactory.Endpoint.Binding.CloseTimeout = new TimeSpan(0, 5, 0); 
     proxy.ChannelFactory.Endpoint.Binding.OpenTimeout = new TimeSpan(0, 5, 0); 

    } 
    } 

Ma fonction de test sur le serveur:

[Invoke] 
public void TestTimeout() 
{ 
    while (true) 
    { 
    Thread.Sleep(100); // after one full minute, I get the above exception 
    } 
} 

Peut-être quelque chose d'autre timing out? Je vois le même problème sur ma machine de développement local ainsi que sur mon serveur de production sous IIS7. Je suis déconcerté par ce que cela pourrait être. Je ne pense pas que les valeurs de timeout soient ignorées car je n'ai plus l'exception de timeout standard. Je pense juste qu'il y a un autre endroit où un timeout arrive.

Des idées?

-Scott

Répondre

0

Ceci est juste une pensée, avez-vous essayé de faire votre délai d'attente de la session asp.net explicite, peut-être son sur un ce ..

+0

Essayé cela sans chance .... – TChadwick

0

Essayez de mettre cela dans le constructeur de votre proxy:

InnerChannel.OperationTimeout = new TimeSpan(24, 0, 0); 
Questions connexes