Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, ASP.NET Web uygulamasında bir hatanın (İstek Zaman Aşımına Uğradı) oluşması sorununu çözmenize yardımcı olur.
Özgün ürün sürümü: ASP.NET
Özgün KB numarası: 825739
Belirtiler
yöntemini kullandığınızda DataAdapter.Fill
veya işlenmesi 90 saniyeden uzun süren bir ASP.NET Web uygulamasında sorgu çalıştırdığınızda aşağıdaki hata iletisini alabilirsiniz:
HttpException (0x80004005): İstek zaman aşımına uğradı.
Bu hata yalnızca Web uygulamasını yayın modunda çalıştırdığınızda ve web.config dosyasındaki Debug
özniteliğin değeri false olarak ayarlandığında oluşur.
Neden
Varsayılan olarak, machine.config dosyasında özniteliğinin executionTimeout
değeri 90 saniye olarak ayarlanır. bu hata, işleme süresi 90 saniyeyi aştığında oluşur.
Geçici çözüm
Bu sorunu geçici olarak çözmek için yapılandırma dosyasında özniteliği için executionTimeout
ayarlanan zaman aşımı değerini artırın.
executionTimeout
özniteliği machine.config dosyasında altında <httpRequest>
bulunur. Bu ayarları web.config dosyasında veya machine.config dosyasında değiştirebilirsiniz. Zaman aşımı için varsayılan değer 90 saniyedir. özniteliği, executionTimeout
bir isteğin ASP.NET Web uygulaması tarafından kapatılmadan önce çalışmasına izin verilen en fazla saniye sayısını gösterir.
Yöntem 1: web.config dosyasında executionTimeout öznitelik değerini ayarlayın
Web.config dosyasını Not Defteri'nde açın.
<httpRuntime>
bölümüne öğesini<system.web>
aşağıdaki gibi ekleyin:<configuration> <system.web> <httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" /> </system.web> </configuration>
Zaman aşımı hatalarını önlemek için özniteliğinin
executionTimeout
değerini değiştirin.web.config dosyasını kaydedin.
Yöntem 2: machine.config dosyasında executionTimeout öznitelik değerini ayarlayın
Machine.config dosyasını Not Defteri'nde açın. machine.config dosyası dizininde
%SystemRoot%\Microsoft.NET\Framework\%VersionNumber%\CONFIG\
bulunur.machine.config dosyasında öğesini bulun
<httpRuntime>
. web.config dosyası Web Uygulaması dizininde bulunur.<httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" />
Zaman aşımı hatalarını önlemek için özniteliğinin
executionTimeout
değerini değiştirin.machine.config dosyasını kaydedin.
Durum
Bu davranış, tasarım gereğidir.
Davranışı yeniden oluşturma adımları
Microsoft Visual Studio'ya başlayın.
Dosya menüsünde Yeni>Proje’yi seçin.
Tüm proje türleri altında Tüm platformlar>Web'in altında Tüm diller>Windows'un altında Visual Basic'i seçin, şablonlar listesinden ASP.NET Web Uygulaması(.NET Framework) öğesini seçin ve ardından proje oluşturma sayfasında Web Forms'ı seçin. Varsayılan olarak WebForm1.aspx oluşturulur.
Çözüm Gezgini'da WebForm1.aspx sağ tıklayın ve kodu görüntüle'yi seçin.
Veritabanı bağlantısını ve
DataAdapter
veri kümesini doldurma yöntemini eklemek için mevcut kodu aşağıdaki kodla değiştirin:Imports System.Data.SqlClient Public Class WebForm1 Inherits System.Web.UI.Page Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try Dim sConnectionString As String sConnectionString = "server=servername;uid=sa;pwd=password;database=testdatabase;" Dim objConn As SqlConnection objConn = New SqlConnection(sConnectionString) objConn.Open() Dim daAuthors As SqlDataAdapter 'Increase the no.of records from existing value, if execution time is less than 90 sec. daAuthors = New SqlDataAdapter("Select top 60000 * From timelog (nolock)", objConn) Dim myDs As DataSet myDs = New DataSet("testTimelog") Dim dt As DateTime dt = New DateTime() dt = dt.Now Response.Write("StartTime of DataAdapter fill - " + dt) daAuthors.Fill(myDs, "testTimelog") dt = New DateTime() dt = dt.Now Response.Write("<br>EndTime of DataAdapter fill - " + dt) Response.Write("<br>No of Rows = " + myDs.Tables(0).Rows.Count.ToString()) Catch ex As Exception Response.Write(ex.ToString()) End Try End Sub End Class
Web.config dosyasını Not Defteri'nde açın ve özniteliğin
Debug
değerini aşağıdaki gibi false olarak ayarlayın:<configuration> <system.web> <compilation defaultLanguage="vb" debug="false" /> </system.web> </configuration>
Uygulamayı yayın modunda derlemek üzere ayarlamak için şu adımları izleyin:
- Çözüm Gezgini'da projenize sağ tıklayın.
- Özellikler'i ve ardından Configuration Manager'ı seçin.
- Etkin Çözüm Yapılandırması'nın altında Yayın'ı ve ardından Kapat'ı seçin.
- Tamam'ı seçin.
Projeyi derlemek ve çalıştırmak için Hata Ayıkla menüsünde Başlat'ı seçin. Belirtiler bölümünde açıklanan hata iletisini alabilirsiniz.
Not
machine.config dosyasında ayarlanan zaman aşımı için varsayılan değer 90 saniyedir. İşlem süresi 90 saniyeden kısaysa, getirilecek kayıt sayısını artırarak işlem süresini artırın.