Respond needs javascript to run. To find out more click here
Programlama » Sayfa 5 » Serdar Demir
RSS
 

Archive for the ‘Programlama’ Category

SQL Server bağlantı zaman aşımı süresi doldu hatası Sql Pooling

27 Nis

Bugun muhasebe kayıtlarından çıkan bir hata yüzünden bütün kayıtları gğncellemem gerekti acele ile yazdıgım kod kırıldı :)

// Bağlantı oluştur
SqlConnection connection = new SqlConnection(ConnectionService.ConnectionString);
// Bağlantıyı aç
if (connection.State!=ConnectionState.Open)
{
connection.Open();
}
Yukarıdaki kod normal şartlarda problem çıkartmaz bunun altında genelde ya sql sorgusu yada store procedure çalıştırırsınız.  Ama iş büyük çaptaki verilere geldiginde ve bağlantı kopup tekrar açıldığında sql connection pool kapasitesini aşıyor ve SQL Server bağlantı zaman aşımı süresi doldu hatası alıyorsunuz. Bu sorunu düzeltmek için lock yapısını kullanayım dedim ama yine olmadı yapmanız gereken sadece kodu aşağıdaki şekilde değiştiriip Sqlconnection.ClearPool(connection) metodunu çalıştırmak .
SqlConnection connection = new SqlConnection(ConnectionService.ConnectionString);
SqlConnection.ClearPool(connection);
if (connection.State!=ConnectionState.Open)
{
connection.Open();
}
 
 

Asp.net Güvenliği web.config dosyasını şifreleme

02 Nis

Webconfig dosyasi web uygulamamızın ayarlarinin ve bilgilerinin tutuldugu bir xml dosyasıdır. IIS üzerinde yaptıgımız değişiklikler örneğin bir connection string ekleme, user tanımlama, application pool belirleme(bunu bi ara anlatcam iis 7 versiyonunu) vs iis in arayuzunu kullanarak oluşturduğumuz ayarlar aslında arka planda webconfig e yazılır. Webconfig, machine config, globalasax veya dll lerinizin bulunduğu bin klasörünüz bunlar aslında asp.net platformu tarafından güvenlik altına alınana dosyalardır okuma yazma izini vermek pek mantıklı değildir. Örneğin bin klasörüne okuma ve yazma izni vermek :)

Neyse konumuza dönelim bu varsayılan güvenlik önlemleri bazen yetersiz kalabiliyor. Bir web uygulamasını hacklemenin çeşitli yöntemleri var örneğin css ile webconfige mudahele edilebiliyordu ve microsoft bu açığı yamadı :)

webconfig dosyanın başkalarının eline geçerse uzak serverınıza bağlanabilir. roller ile oynanabilir herşey yapılabilir aslında :)

Webconfig dosyasının varsayılan guvenligini bu dosyayı şifreleyerek arttırabiliriz. 

Visual studio tools / command promtu açıyoruz.

Web projemizin olduğu kök dizine gidiyoruz. (cd C:\Users\serdar\Documents\Visual Studio 2008\Projects\WebApplication35\WebApplication35 gibi)

daha sonra aspnet_regiis komutunu çalıştıracağız.

aspnet_regiis pef appSettings.

bu işlem sonunda webconfig dosyamızın içerişi aşağıdaki gibi:

</configSections>
<appSettings configProtectionProvider=”RsaProtectedConfigurationProvider”>
<EncryptedData Type=”http://www.w3.org/2001/04/xmlenc#Element”
xmlns=”http://www.w3.org/2001/04/xmlenc#”>
<EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#tripledes-cbc” />
<KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>
<EncryptedKey xmlns=”http://www.w3.org/2001/04/xmlenc#”>
<EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#rsa-1_5″ />
<KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>XYHbkmcbw4I1Yc+NXFXveMLVoyiNpSvya0xMg6vr2aE5kIWq+jiymfk5d7yE5dnttfVT9udXShlmDHC4psetcTXDDnU1eflOYGGiaX7pzu9He6nxxRaQNbJQOatSHCD3GeoRYMIT+OznNNeEwaOaeBwOjYibTPcfDA7lNtjSu/E=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>Xw8g2KGmz7BtcA+Ym4DH0gF1Soba+Pd2</CipherValue>

</configSections> <appSettings configProtectionProvider=”RsaProtectedConfigurationProvider”>  <EncryptedData Type=”http://www.w3.org/2001/04/xmlenc#Element”   xmlns=”http://www.w3.org/2001/04/xmlenc#”>   <EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#tripledes-cbc” />   <KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>    <EncryptedKey xmlns=”http://www.w3.org/2001/04/xmlenc#”>     <EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#rsa-1_5″ />     <KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>      <KeyName>Rsa Key</KeyName>     </KeyInfo>     <CipherData>      <CipherValue>XYHbkmcbw4I1Yc+NXFXveMLVoyiNpSvya0xMg6vr2aE5kIWq+jiymfk5d7yE5dnttfVT9udXShlmDHC4psetcTXDDnU1eflOYGGiaX7pzu9He6nxxRaQNbJQOatSHCD3GeoRYMIT+OznNNeEwaOaeBwOjYibTPcfDA7lNtjSu/E=</CipherValue>     </CipherData>    </EncryptedKey>   </KeyInfo>   <CipherData>    <CipherValue>Xw8g2KGmz7BtcA+Ym4DH0gF1Soba+Pd2</CipherValue>

Şifreleme işleminden sonra uygulamamızda herhangi bir problem olmadan çalışacaktır

Şimdi şifreledigimiz webconfigi geri çözelim

ayni kodu yazıyor pef yi pdf ile değiştiriyoruz (e=encrypt || d=decrypt)

 
1 Comment

Posted in Asp.net

 

ASP.net App_offline.htm kullanımı

25 Mar

Bugun karşılaştıgım bir problem yuzunden küçük bi araştırma yaptım ve paylaşmak istedim proje geliştirdiğimiz ve sürekli sistem çalışan bir sistem üzerinde değişikilk yapmam gerekiyor ve bu değişiklikler sırasında  Asp.net in meşhur bir hata sayfası vardir :)

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
    </system.web>
</configuration>

kullanıcı sürekli o sayfa ile karşı karşıya kalıyordu site üzerinde bir değişiklik yapacağınız zaman server ın kok dizinine App_offline.htm adında bir html dosyası upload ediyoruz (yada serverda dursun adını degiştirin :) ) sayfanın tasarımını ben aşağıdaki gibi yaptım

Artık kullanıcılarınız siz düzeltmeleri yaparken bu sayfa ile karşılaşacaklar.  Bu arada bu işlemi kod yazarak yapmak isteyen arkadaşlar HttpModule veya global asax application start dosyası ile kendi oluşturdugunuz bir cms sistemi ile de çözebilirsiniz.

 
No Comments

Posted in Asp.net