Yang tidak jelas, tetapi saya pikir Anda bertanya secara implisit, adalah apakah mungkin untuk mengkonfigurasi di sisi server untuk menghentikan panggilan yang membutuhkan waktu lebih dari satu menit untuk diproses. Ini tidak mungkin
gravidThoughts
Jawaban:
196
Apakah Anda mengacu pada sisi server atau sisi klien?
Untuk klien, Anda ingin menyesuaikan atribut sendTimeout dari elemen yang mengikat. Untuk layanan, Anda ingin menyesuaikan atribut acceptTimeout dari elemen yang mengikat.
Di bawah menu Alat di Visual Studio 2008 (atau 2005 jika Anda memiliki hal-hal WCF yang tepat diinstal) ada pilihan yang disebut 'WCF Service Configuration Editor'.
Dari sana Anda dapat mengubah opsi yang mengikat untuk klien dan layanan, salah satu dari opsi ini adalah untuk time-out.
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 ...}}
Jawaban:
Apakah Anda mengacu pada sisi server atau sisi klien?
Untuk klien, Anda ingin menyesuaikan atribut sendTimeout dari elemen yang mengikat. Untuk layanan, Anda ingin menyesuaikan atribut acceptTimeout dari elemen yang mengikat.
Tentu saja, Anda harus memetakan titik akhir yang Anda inginkan ke pengikatan tertentu.
sumber
receiveTimeout
sisi server mengatur penentuan kemalasan untuk binding berbasis sesi. Misalnya, server tidak akan menggunakan pengaturan ini untuk binding basicHTTP. Anda harus memutar batas waktu pemrosesan sisi server Anda sendiri untuk WCFDi bawah menu Alat di Visual Studio 2008 (atau 2005 jika Anda memiliki hal-hal WCF yang tepat diinstal) ada pilihan yang disebut 'WCF Service Configuration Editor'.
Dari sana Anda dapat mengubah opsi yang mengikat untuk klien dan layanan, salah satu dari opsi ini adalah untuk time-out.
sumber
Waktu tunggu yang berbeda memiliki arti yang berbeda pula. Ketika Anda bekerja pada klien .. Anda mungkin melihat SendTimeout - lihat referensi ini - penjelasan yang bagus dan relevan: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread / 84551e45-19a2-4d0d-bcc0-516a4041943d /
sumber
Anda dapat memilih dua cara:
1) Dengan kode di klien
2) Dengan WebConfig di server web
Untuk lebih jelasnya lihat dokumentasi resmi
Mengkonfigurasi Nilai Batas Waktu pada Binding
Kelas WSHttpBinding
sumber
Selain batas waktu yang mengikat (yang ada di
Timespan
s), Anda mungkin juga membutuhkan ini. Ini dalam hitungan detik.sumber