Uygulama config dosyasındaki connection string'e aşağıdaki kod girilerek hata giderildi. Fakat bu geçici bir çözüm. Deadlock hatası almamak için aynı anda sadece bir bağlantının açık olması daha mantıklı olacaktır. Ya da veritabanı erişiminde kullanılacak kodun bu işleme uygun olarak oluşturulması gerekmektedir (SQL kodlarda NOLOCK kullanılması gibi).
MultipleActiveResultSets=true;
Monday, July 31, 2017
Datagridview'de titreme ve donma sorunu hk. (Datagridview Flickering)
Datagridview'de özellikle çok sayıda kolon içeren bir sorgu sonucu gösterilmek istendiğinde verilerde titreme (flickering) ile karşılaşıyorduk. Geçenlerde stackoverflow'da dolaşırken aşağıdaki koda denk geldim. Titremeyi tamamen ortadan kaldırıyor.
Public Shared Function DoubleBuffered(ByVal dgv As DataGridView)
Dim dgvType As Type = dgv.[GetType]()
Dim pi As PropertyInfo = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance Or BindingFlags.NonPublic)
pi.SetValue(dgv, True, Nothing)
Return Nothing
End Function
Datagridview Flickering Cambly, English, Yabancı Dil
Public Shared Function DoubleBuffered(ByVal dgv As DataGridView)
Dim dgvType As Type = dgv.[GetType]()
Dim pi As PropertyInfo = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance Or BindingFlags.NonPublic)
pi.SetValue(dgv, True, Nothing)
Return Nothing
End Function
Datagridview Flickering Cambly, English, Yabancı Dil
Sunday, December 11, 2016
Belirli bir günden önceki dosyaları silme metodu.
Belirli bir günden önceki dosyaları silme metodu.
Aşağıdaki metod ile "folderPath" klasöründe beforeDayCount parametresinde belirtilen gün sayısından daha önce oluşturulmuş dosyalar silinir.
Public Shared Sub DeleteFiles(folderPath As String, Optional beforeDayCount As Integer = 30)
If (folderPath.Trim() <> "" And beforeDayCount <> 0) AndAlso System.IO.Directory.Exists(folderPath) Then
Dim folderInfo As New System.IO.DirectoryInfo(folderPath)
Dim fileList As System.IO.FileInfo() = folderInfo.GetFiles()
For Each fi As System.IO.FileInfo In fileList
If fi.LastWriteTime <= DateAdd(DateInterval.Day, IIf(beforeDayCount < 0, beforeDayCount, -1 * beforeDayCount), Date.Now) Then
Try
System.IO.File.Delete(fi.FullName)
Catch ex As Exception
End Try
End If
Next
End If
End Sub
Aşağıdaki metod ile "folderPath" klasöründe beforeDayCount parametresinde belirtilen gün sayısından daha önce oluşturulmuş dosyalar silinir.
Public Shared Sub DeleteFiles(folderPath As String, Optional beforeDayCount As Integer = 30)
If (folderPath.Trim() <> "" And beforeDayCount <> 0) AndAlso System.IO.Directory.Exists(folderPath) Then
Dim folderInfo As New System.IO.DirectoryInfo(folderPath)
Dim fileList As System.IO.FileInfo() = folderInfo.GetFiles()
For Each fi As System.IO.FileInfo In fileList
If fi.LastWriteTime <= DateAdd(DateInterval.Day, IIf(beforeDayCount < 0, beforeDayCount, -1 * beforeDayCount), Date.Now) Then
Try
System.IO.File.Delete(fi.FullName)
Catch ex As Exception
End Try
End If
Next
End If
End Sub
Friday, September 9, 2016
ASP.NET Web Service ile NT Domain Hesabı Kullanarak SQL Server'a Bağlanmak (Impersonation Yöntemi ile)
Kurumsal projelerde kullanılan sql generic user, şifre gereksinimi ve şifrenin belirli aralıklarla değiştirilmek istenmesi nedeniyle sorunlara neden olmaktadır. Bu nedenle sql user yerine bir domain üzerinde tanımlı nt user kullanarak şifre ihtiyacını ortadan kaldırmak mümkün.
1) Öncelikle web service’in kurulacağı app server üzerinde svctest adında bir domain user’ı oluşturulup ardından aynı user için SQL Server’daki ilgili database’ e db_owner hakkı verilmelidir.
2) IIS üzerine web service eklenmeden önce Application Pool oluşturulması gerekmektedir. Aşağıdaki şekilde oluşturulmalıdır.
TLS1.2 desteği isteniyorsa .NET CLR sürümü v4.5 ve üzeri olmalıdır.
1) Öncelikle web service’in kurulacağı app server üzerinde svctest adında bir domain user’ı oluşturulup ardından aynı user için SQL Server’daki ilgili database’ e db_owner hakkı verilmelidir.
2) IIS üzerine web service eklenmeden önce Application Pool oluşturulması gerekmektedir. Aşağıdaki şekilde oluşturulmalıdır.
TLS1.2 desteği isteniyorsa .NET CLR sürümü v4.5 ve üzeri olmalıdır.
Monday, August 22, 2016
JQuery.FileDownload plugin'i ile dosya download edilmesi
JQuery.FileDownload (https://github.com/johnculviner/jquery.fileDownload) plugin'ini düzgün çalıştırabilmek için Set-Cookie ve Cache-Control header larının code behind kısmında eklenmesi gerekiyor.
Download.aspx.vb
Response.Clear()
Dim timestamp As String =
Request.QueryString("timestamp")
timestamp = CodeHelper.CheckClientContent(timestamp)
Dim fileName As String = "File_" &
timestamp & ".xlsx"
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("Content-Disposition", "attachment;filename=" &
fileName)
Response.AddHeader("Set-Cookie",
"fileDownload=true; path=/")
Response.AddHeader("Cache-Control",
"no-cache, no-store, must-revalidate")
EPPlus ile oluşturulmuş excel dosyanın download edilmesi
pck EPPlus package nesnesidir. Aşağıdaki kod try-catch bloğu içerisinde olmalıdır ve ThreadAbortException hatası kesinlikle handle edilmelidir.
Response.Clear()
Dim timestamp As String = Request.QueryString("timestamp")
timestamp = CodeHelper.CheckClientContent(timestamp)
Dim fileName As String = "File_" & timestamp & ".xlsx"
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("Content-Disposition", "attachment;filename=" & fileName)
Using myMemoryStream As New MemoryStream
pck.SaveAs(myMemoryStream)
myMemoryStream.WriteTo(Response.OutputStream)
Response.Flush()
Response.End()
End Using
Subscribe to:
Posts (Atom)