Was nicht klar ist, aber ich denke, Sie fragen implizit, ob es möglich ist, auf der Serverseite zu konfigurieren, dass Anrufe, deren Verarbeitung länger als eine Minute dauert, zeitlich begrenzt werden. Dies ist nicht möglich
gravidThoughts
Antworten:
196
Beziehen Sie sich auf die Serverseite oder die Clientseite?
Für einen Client möchten Sie das sendTimeout- Attribut eines Bindungselements anpassen . Für einen Dienst möchten Sie das Attribut receiveTimeout eines Bindungselements anpassen.
Unter dem Menü Extras in Visual Studio 2008 (oder 2005, wenn Sie das richtige WCF-Material installiert haben) gibt es eine Option namens "WCF Service Configuration Editor".
Von dort aus können Sie die Bindungsoptionen sowohl für den Client als auch für die Services ändern. Eine dieser Optionen ist eine Zeitüberschreitung.
publicstaticvoidMain(){Uri baseAddress =newUri("http://localhost/MyServer/MyService");try{ServiceHost serviceHost =newServiceHost(typeof(CalculatorService));WSHttpBinding binding =newWSHttpBinding();
binding.OpenTimeout=newTimeSpan(0,10,0);
binding.CloseTimeout=newTimeSpan(0,10,0);
binding.SendTimeout=newTimeSpan(0,10,0);
binding.ReceiveTimeout=newTimeSpan(0,10,0);
serviceHost.AddServiceEndpoint("ICalculator", binding, baseAddress);
serviceHost.Open();// The service can now be accessed.Console.WriteLine("The service is ready.");Console.WriteLine("Press <ENTER> to terminate service.");Console.WriteLine();Console.ReadLine();}catch(CommunicationException ex){// Handle exception ...}}
Antworten:
Beziehen Sie sich auf die Serverseite oder die Clientseite?
Für einen Client möchten Sie das sendTimeout- Attribut eines Bindungselements anpassen . Für einen Dienst möchten Sie das Attribut receiveTimeout eines Bindungselements anpassen.
Natürlich müssen Sie Ihren gewünschten Endpunkt dieser bestimmten Bindung zuordnen.
quelle
receiveTimeout
auf der Bestimmung des Nichtstuns regelt Server - Seite für sitzungsbasierten Bindungen. Beispielsweise verwendet der Server diese Einstellung nicht für grundlegende HTTP-Bindungen. Sie müssen Ihre eigenen serverseitigen Verarbeitungszeitlimits für WCFUnter dem Menü Extras in Visual Studio 2008 (oder 2005, wenn Sie das richtige WCF-Material installiert haben) gibt es eine Option namens "WCF Service Configuration Editor".
Von dort aus können Sie die Bindungsoptionen sowohl für den Client als auch für die Services ändern. Eine dieser Optionen ist eine Zeitüberschreitung.
quelle
Unterschiedliche Zeitüberschreitungen bedeuten unterschiedliche Dinge. Wenn Sie am Client arbeiten, sehen Sie sich wahrscheinlich hauptsächlich das SendTimeout an - überprüfen Sie diese Referenz - eine wunderbare und relevante Erklärung: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread / 84551e45-19a2-4d0d-bcc0-516a4041943d /
quelle
Sie können zwei Möglichkeiten wählen:
1) Nach Code im Client
2) Von WebConfig auf einem Webserver
Weitere Einzelheiten finden Sie in den offiziellen Dokumentationen
Konfigurieren von Timeout-Werten für eine Bindung
Klasse WSHttpBinding
quelle
Zusätzlich zu den Bindungszeitüberschreitungen (die in
Timespan
s angegeben sind) benötigen Sie möglicherweise auch diese. Dies ist in Sekunden.quelle