Zaman aşımı süresini artırmak için nasıl Hizmet XML,?
Aptalca bir soru gibi gelebilir ama XML her şeyi çok asmx daha karmaşık gibi görünebilir, nasıl svc bir hizmetin zaman aşımı süresini arttırabilir miyim?
Şu ana kadar öğrendiklerimi burada
<bindings>
<basicHttpBinding>
<binding name="IncreasedTimeout"
openTimeout="12:00:00"
receiveTimeout="12:00:00" closeTimeout="12:00:00"
sendTimeout="12:00:00">
</binding>
</basicHttpBinding>
</bindings>
Ve benim son nokta böyle eşlenen alır:
<endpoint address=""
binding="basicHttpBinding" bindingConfiguration="IncreasedTimeout"
contract="ServiceLibrary.IDownloads">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
Tam bir hata ben alıyorum:
İstek kanal 00:00:59.9990000 sonra bir yanıt beklerken zaman aşımına uğradı. Zaman aşımı değerini veya Bağlama üzerinde SendTimeout değeri İsteği artırmak için aramak geçti artırmak. Bu işlem için ayrılan uzun bir süre bir kısmı olabilir.
XML Test İstemci, hizmet, çalıştırma yapılandırma içeren bir yapılandırma simgesi vardır:
Onun için ayarladım aynı değerleri değil gördüğünüz gibi? Neyi yanlış yapıyorum?
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IDownloads" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="">
<extendedProtectionPolicy policyEnforcement="Never" />
</transport>
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
CEVAP
Bağlama yapılandırma, dört zaman aşımı değerleri değiştirebilirsiniz:
<bindings>
<basicHttpBinding>
<binding name="IncreasedTimeout"
sendTimeout="00:25:00">
</binding>
</basicHttpBinding>
En önemlisi, ne kadar istemci XML hizmetin bir yanıt bekleyin diyor sendTimeout
,. Ayarlarınızda hours:minutes:seconds
belirtebilirsiniz - benim örnekte, 25 dakika için zaman aşımı ayarlayın.
Adından da anlaşılacağı gibi openTimeout
seçimden sonra hizmet için bağlantıyı açtığınızda bekleyebilirseniz zaman miktarıdır. Benzer şekilde, closeTimeout
bir istisna atılır önce bekleyeceksin bağlantı (istemci elden proxy) kapattığınızda zaman miktarıdır.
receiveTimeout
bir bit gibi bir ayna için sendTimeout
- gönderme zaman aşımı miktarını zaman beklerim bir yanıt sunucudan, receiveTimeout
miktar zaman verecek müşteri almak ve işlem yanıt sunucudan.
Diye sen gönder bir ileri bir geri "normal" mesajları, her ikisi de olabilir çok kısa özellikle receiveTimeout
beri alıcı bir SOAP ileti, deşifre, kontrol ve kaldırmada gerekir almak neredeyse hiçbir zaman. Hikaye - bu durumda, istemci aslında "indir" sunucudan geri akışı. tamamlamak için daha fazla zaman gerekebilir akışı farklıdır
Ayrıca openTimeout, receiveTimeout ve closeTimeout var. MSDN docs on binding bunlar ne hakkında size daha fazla bilgi verir.
XML tüm intricasies ciddi bir tutuş elde etmek için, kesinlikle satın tavsiye ederim "Learning WCF" Michele tarafından kitap Leroux Bustamante:
ve siz de biraz zaman-Bölüm 15 "WCF Top to Bottom" bakabilirim serisi - şiddetle tavsiye! onu izlerken harcamak
Daha ileri konular için, kesinlikle Programming WCF servis kitabı Lovy Juwal kontrol etmelisiniz.
Marc
Nasıl istek IIS7 zaman aşımı artırmak ...
Nasıl Android üzerinde internet erişim...
Nasıl HttpResponse zaman aşımı ayarlam...
Nasıl bir iş zaman aşımı için...
Nasıl hata ayıklama bekle zaman aşımı ...