bir ASP.NET uygulamasında DataAdapter yöntemini kullandığınızda istek zaman aşımına uğradı hatası
Bu makale, bir ASP.NET Web uygulamasında hatanın (İstek Zaman Aşımına Uğradı) oluştuğu sorunu çözmenize yardımcı olur.
Orijinal ürün sürümü: ASP.NET
Özgün KB numarası: 825739
Belirtiler
yöntemini kullandığınızda DataAdapter.Fill
veya bir ASP.NET Web uygulamasında işlenmesi 90 saniyeden uzun süren bir 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, özniteliğin executionTimeout
değeri Machine.config dosyasında 90 saniye olarak ayarlanır. İşlem süresi 90 saniyeyi aştığında bu hata 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.
özniteliği, executionTimeout
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 ayarlama
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ından kaçınmak 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 ayarlama
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ından kaçınmak için özniteliğinin
executionTimeout
değerini değiştirin.Machine.config dosyasını kaydedin.
Durum
Bu davranış tasarımdan kaynaklanır.
Davranışı yeniden oluşturma adımları
Microsoft Visual Studio .NET'i başlatın.
Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'yi seçin.
Proje Türleri'nin altında Visual Basic Projeleri'ne tıklayın ve ardından Şablonlar'ın altında Web Uygulaması'nı ASP.NET seçin. Varsayılan olarak
WebForm1.aspx
oluşturulur.Tasarım görünümünde WebForm1'e 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
not defteri'nde web.config dosyasını 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 için ayarlayın. Bunu yapmak için şu adımları uygulayın:
- Çö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.
Başvurular
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin