Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det finns ett antal tillgängliga timeout-inställningar i WCF-bindningar. Om du ställer in de här timeout-inställningarna på rätt sätt kan du förbättra inte bara tjänstens prestanda utan också spela en roll i användbarheten och säkerheten för din tjänst. Följande timeouter är tillgängliga för WCF-bindningar:
OpenTimeout
CloseTimeout
SendTimeout
ReceiveTimeout
Tidsgränser för WCF-bindning
Var och en av de inställningar som beskrivs i det här avsnittet görs på själva bindningen, antingen i kod eller konfiguration. Följande kod visar hur du programmatiskt anger tidsgränser för en WCF-bindning i kontexten för en lokalt installerad tjänst.
public static void Main()
{
Uri baseAddress = new Uri("http://localhost/MyServer/MyService");
try
{
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService));
WSHttpBinding binding = new WSHttpBinding();
binding.OpenTimeout = new TimeSpan(0, 10, 0);
binding.CloseTimeout = new TimeSpan(0, 10, 0);
binding.SendTimeout = new TimeSpan(0, 10, 0);
binding.ReceiveTimeout = new TimeSpan(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 ...
}
}
I följande exempel visas hur du konfigurerar tidsgränser för en bindning i en konfigurationsfil.
<configuration>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding openTimeout="00:10:00"
closeTimeout="00:10:00"
sendTimeout="00:10:00"
receiveTimeout="00:10:00">
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
</configuration>
Mer information om de här inställningarna finns i dokumentationen Binding för klassen.
Tidsgränser på klientsidan
På klientsidan:
SendTimeout – används för att initiera OperationTimeout, som styr hela processen för att skicka ett meddelande, inklusive att ta emot ett svarsmeddelande för en begäran/svarstjänståtgärd. Den här tidsgränsen gäller även när du skickar svarsmeddelanden från en återanropskontraktsmetod.
OpenTimeout – används när kanaler öppnas när inget explicit timeout-värde har angetts.
CloseTimeout – används när kanaler stängs när inget explicit timeout-värde har angetts.
ReceiveTimeout – används inte.
Tidsgränser på tjänstsidan
På tjänstsidan:
SendTimeout, OpenTimeout och CloseTimeout är samma som på klienten.
ReceiveTimeout – används av Service Framework Layer för att initiera tidsgränsen för sessionsinaktivt som styr hur länge en session kan vara inaktiv innan tidsgränsen uppnås.