C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

21 Nisan 2024 Pazar

Sertifika zinciri güvenilmeyen bir yetkili tarafından verildi hatası çözümü

Herkese merhaba, yeni güncellemeler sonrasında karşılaştığım bir hatadan bahsetmek istiyor.

SQL Server için son yeni güncelleme ile SQL connection için güvenli server servtifikaları hayatımıza girmiştir. Bağlantı cümlesine TrustServerCertificate=true eklemek sorunu çözüyor.

TrustServerCertificate olarak ayarlandığında true aktarım katmanı, kanalı şifrelemek için SSL kullanır ve güveni doğrulamak için sertifika zincirinde yürümeyi atlar. olarak ayarlanırsa TrustServerCertificate true ve şifreleme açıksa, olarak ayarlansa Encrypt false bile sunucuda belirtilen şifreleme düzeyi kullanılır. Aksi takdirde bağlantı başarısız olur.

Microsoft.Data.SqlClient.SqlException

A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - Sertifika zinciri güvenilmeyen bir yetkili tarafından verildi.)

DevExpress XPO kullanıyorsanız aynı hatayı burada da alacaksınız. Config dosyasına TrustServerCertificate=true parametreyi eklediğinizde sorun çözülecektir. Örnek Connection String 'aşağıda görebilirsiniz.

<add name="getConnection" connectionString="server=.;database=DATABASE;integrated security=SSPI;TrustServerCertificate=true" providerName="System.Data.SqlClient" />

DevExpress.Xpo.DB.Exceptions.UnableToOpenDatabaseException

Unable to open database. Connection string: 'data source=.;user id=USER;password=***REMOVED***;initial catalog=DATABASE;Persist Security Info=true;'; Error: 'Microsoft.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - Sertifika zinciri güvenilmeyen bir yetkili tarafından verildi.) ---> System.ComponentModel.Win32Exception (0x80004005): Sertifika zinciri güvenilmeyen bir yetkili tarafından verildi.

Kaynak: https://learn.microsoft.com/tr-tr/dotnet/api/system.data.sqlclient.sqlconnectionstringbuilder.trustservercertificate?view=dotnet-plat-ext-8.0

13 Eylül 2018 Perşembe

Birden çok e-posta adresi doğrulamak için Regex

      İhtiyaç olabilecek işlevsel bir bilgi paylaşmak istedim. Örneğin bir textbox içerisinde birden çok e-posta adresi yazmak ve doğrulamak isterseniz aşağıdaki regex işini iyi yapıyor.

Regex
([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)


26 Ekim 2013 Cumartesi

C# Dış IP (İnternet)

Dış "İnternet" IP bulmak için yardımcı kod.

System.Net.WebClient webClient = new System.Net.WebClient();
string dnsString = webClient.DownloadString("http://checkip.dyndns.org");
dnsString = (new System.Text.RegularExpressions.Regex(@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b")).Match(dnsString).Value;
webClient.Dispose();

MessageBox.Show(stringDns);

Windows işletim sistemi versiyonu hakkında bilgi almak

MessageBox.Show(Environment.OSVersion.ToString());

Versiyon

Environment.OSVersion.Version

İşletim sistemiVersiyon
Windows 86.2
Windows Server 20126.2
Windows 7 Service Pack 16.1
Windows 76.1
Windows Server 2008 R26.1
Windows Server 20086.0
Windows Vista6.0
Windows Server 2003 R25.2
Windows Server 20035.2
Windows XP 64-Bit Edition5.2
Windows XP5.1
Windows 20005.0

Kaynak:
http://msdn.microsoft.com/en-us/library/system.environment.osversion.aspx

13 Ocak 2013 Pazar

Tab tuşu yerine enter kullanmak

   Yazdığımız programlarda alışkanlık gereği kullanıcılar enter tuşuna basıldığında sonraki alana geçmesini bekler. Yazılımcıda KeyPress yada KeyDown event'ı ile bir sonraki "control'e" alana "focus" atlamasını sağlamaya çalışır. Tabiki bu yöntem çok zaman alacak ve meşakkatli bir işlemdir.

Enter'a basıldığında Tab tuşuna yada controle yönlendirmek için basit bir kod. Farklı yöntemlerde bulunmaktadır. 

"Using Enter Key as a Tab"

1.Yöntem 
private void FrmTeklifEvraki_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        SendKeys.Send("{TAB}");
    }
}

2.Yöntem 
private void FrmTeklifEvraki_KeyDown(object sender, KeyEventArgs e)
{
    Control nextControl;
    if (e.KeyCode == Keys.Enter)
    {
        nextControl = GetNextControl(ActiveControl, !e.Shift);
        if (nextControl == null)
            nextControl = GetNextControl(null, true);
        nextControl.Focus();
        e.SuppressKeyPress = true;
    }
}

5 Kasım 2012 Pazartesi

Parametre hatalı. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))


"Parametre hatalı. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))" mesajı alıyorsanız Enterprise Library yükle olmayabilir.

"Microsoft.Practices.EnterpriseLibrary.Common" kütüphanesini kullanan bir bölüm bulunmakta ve söz konusu kütüphaneyi projenize dahil ederseniz sorun çözülecektir.


Asp.Net ise microsoft.library klasöründeki temp asp.net klasorunu silip projde clean derseniz düzelecektir.

Microsoft patterns & practices Developer Center
http://msdn.microsoft.com/en-us/library/ff648951.aspx
http://entlib.codeplex.com

19 Eylül 2012 Çarşamba

10 Ağustos 2011 Çarşamba

LINQ Örnekleri için LINQ Project Sample Query Explorer

LINQ to Objects - LINQ to SQL - LINQ to DataSet - LINQ to XML gibi LINQ örneklere ihtiyacınız olduğunda http://msdn.microsoft.com/en-us/vcsharp/aa336746 kaynaktan faydalanbilirsiniz.

Eğer örnekler yeterli değil daha detaylı örneklere ihtiyacınız olur ise MSDN kaynaklarında C# ve VB için LINQ  Project Sample Query Explorer indirerek daha detaylı örnekleri inceleyebilirsiniz.

http://code.msdn.microsoft.com/LINQ-Sample-Queries-13a42a54


20 Nisan 2011 Çarşamba

LINQ to SQL - Left Outer Join kullanırken birden fazla parametre vermek.

Linq to sql ile left outer kullanırken birden fazla parametre ile sorgu yazmak.
var malzemePlan = from pln in mye.URETIM_MALZEME_PLANLAMAs
                  from bdn in mye.BEDEN_HAREKETLERIs.Where(a =
                         a.BdnHar_DRECid_DBCno == pln.upl_RECid_DBCno
                         a.BdnHar_DRECid_RECno == pln.upl_RECid_RECno
                         a.BdnHar_Tipi == 'N').DefaultIfEmpty()
                  where pln.upl_isemri == isEmriKodu && 
                        pln.upl_satirno == 0 && 
                        pln.upl_uretim_tuket == 1
                  select new
                  {
                      pln.upl_urstokkod,
                      pln.upl_depno,
                      bdn.BdnHar_BedenNo,
                      bdn.BdnHar_HarGor
                  };

4 Ocak 2011 Salı

SQL Image Data Type veriyi PictureBox ile görüntülemek.

SQL Server veritabanında binary veri türlerinden olan Image data type verilerini PictureBox ile görüntülemek için basit bir kod.

private void button1_Click(object sender, EventArgs e){
    pictureBoxStokResmi.Image = GetStokResmi(txtStokKodu.Text);
}
 
private Image GetStokResmi(string StokKodu){
    Image _image = null;
    var stok = from st in mye.STOKLARs
               where st.sto_kod == StokKodu
               select new
               {
                   st.sto_RECid_DBCno,
                   st.sto_RECid_RECno,
                   st.sto_fileid
               };
    foreach (var str in stok)
    {
        var image = (from pb in mye.mye_ImageDatas
                     where pb.RecID_DBCno == str.sto_RECid_DBCno && 
                     pb.RecID_RECno == str.sto_RECid_RECno &&
                     pb.TableID == str.sto_fileid
                     select pb.Data).FirstOrDefault();
        byte[] array = image.ToArray();
        _image = Image.FromStream(new MemoryStream(array));
    }
    return _image;
}

10 Kasım 2010 Çarşamba

Row not found or changed. – LINQ – ChangeConflictException

Eğer Linq to SQL kullanırken "SubmitChanges();" update etmek istediğiniz data "Row not found or changed" mesajı alırsanız hatayı yakalayıpduruma göre eski yada yeni değeri veritabanına yazabilirsiniz.

try
{
      MikroDbDataContext.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch (ChangeConflictException)
{
      foreach (ObjectChangeConflict conflict in MikroDbDataContext.ChangeConflicts)
      {
             conflict.Resolve(RefreshMode.OverwriteCurrentValues);
      }
}

Yada hiç uğraşmak istemiyorum derseniz;

Update "SubmitChanges();" etmeden önce değişiklik yapacağınız nesneyi refresh ederseniz hatanın oluşmasını önleyebilirsiniz.

MikroDbDataContext.Refresh(RefreshMode.OverwriteCurrentValues, mlzDurumKontrol);

2 Ekim 2010 Cumartesi

Özel klasörlere için yolu bulabilmek. "Environment.SpecialFolder"

Uygulama geliştirirken özel klasörler 'Special Folder' dediğimiz 'Desktop, ApplicationData, Startup, Favorites, ApplicationData, System, ProgramFiles, Favorites' gibi klasörlerde çalışmak gerekekiliyor.

string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
Environment.GetFolderPath(Environment.SpecialFolder.System);
Environment.GetFolderPath(Environment.SpecialFolder.Startup);
Environment.GetFolderPath(Environment.SpecialFolder.Programs);
Environment.GetFolderPath(Environment.SpecialFolder.Templates);
Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

SQL Server database leri listelemek.

SQL Server üzerindeki database lerin bir listesine ihtiyacınız olduğundan SqlConnection dan örneklediğimiz sqlConx.GetSchema("Database") method'u ile database listesini alabiliyoruz. 

using System.Data;
using System.Data.SqlClient; 

string conStr = "Data Source = SunucuAdi; User Id = kullaniciAdi; Password = sifre";
using (SqlConnection sqlConx = new SqlConnection(conStr))
{
    try
    {
           sqlConx.Open();
           DataTable tblDatabases = sqlConx.GetSchema("Databases");
           //Elimize dolu bir DataTable geçti bundan sonra ne istersek yapabiliriz.
           sqlConx.Close();

           //Ben ComboBox ta listeledim.
           cbDatabase.DataSource = tblDatabases;
           cbDatabase.DisplayMember = "database_name";
           cbDatabase.ValueMember = "database_name";
           cbDatabase.SelectedIndex = 0;
    }
    catch (SqlException ex)
    {
           MessageBox.Show("Mesaj : " + ex.Message);
    }
}

11 Ağustos 2010 Çarşamba

LINQ DataContext'in hazır gelen CommandTimeout değerini değiştirmek.

Linq DataContext 'in timeout süresini Connection String yardımı ile değiştiremiyoruz.

connectionString="Data Source=SERVER;Initial Catalog=MikroDB_V12_TEST;Integrated Security=True;Connect Timeout=3600";

TESTDB.dbml
TESTDB.designer.cs dosya içersinden değiştirebiliriz.
 
partial void OnCreated();
//Özel bir method. Bu method yardımı ile değişiklikler yapabilmemizi sağlıyor.

[System.Data.Linq.Mapping.DatabaseAttribute(Name="MikroDB_V12_TEST")]
public partial class MikroDbDataContext : System.Data.Linq.DataContext
{
        //Timeout süresini yazabileceğiniz yer.
        partial void OnCreated()
        {
            this.CommandTimeout = 3600;
        }

        private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();

MSDN : Partial Classes and Methods (C# Programming Guide)

31 Temmuz 2010 Cumartesi

Exception from hresult: 0x80028018 (TYPE_E_INVDATAREAD))

Excel ile çalışıyorsanız ve bu mesajı "Exception from hresult: 0x80028018 (TYPE_E_INVDATAREAD))" alıyorsanız muhtemelen Türkçe dışındaki bir dilde excel kullanıyor olmalısınız.

old format or invalid type library. Exception from hresult: 0x80028018 (TYPE_E_INVDATAREAD))

Eski biçim veya geçerli kitaplık türü. Exception from hresult: 0x80028018 (TYPE_E_INVDATAREAD))

Excel 'i kapatmadan "CurrentCulture" değiştirirsek sorun çıkmayacaktır. Başlangıçta eskiCI olarak saklayıp yazma işleminin sonunda CurrentCulture = eskiCI; değiştirisek yazma işlemi sırasında hata vermeyecektir. Yanlız yeni sürümde desteklenen bazı özellikleri mesela v12 de bulunan özellikleri v11 denemeye kalkarsanız yine hata ile karşılaşırsınız.

14 Temmuz 2010 Çarşamba

SQL Server Compact 4.0 ortaya çıkmaya başladı.

SQL Server Compact 4.0 ortaya çıkmaya başladı ve CTP 1 halinde çalışmalar sürüyor. SQL Server Compact 4 ile ASP.Net projelerine herhangi bir ek yükleme yapmadan SQL Server Compact veritabanı olarak kullanma imkanı sağlıyor.


Öne çıkan özellikleri :
  • Hızlı kurulum ve download için küçük boyutlar.
  • Transact-SQL Kullanımını destekliyor.
  • NET Framework API'ler, ADO.NET ve ADO.NET Entity Framework
    dahil olmak üzere, aynı aileden olan benzer programları kullanır.
  • Visual Studio ile entegre kullanım.
  • Uygulama gereksinimi olarak büyüme önemli bir ihtiyaçtır. Veri ve yüksek eşzamanlı yükleri birden çok kullanıcı nedeniyle idare etmektedir.
  • SQL Server Compact sürümü ücretsiz bir üründür ve Visual Studio ve WebMatrix Beta ücretsiz Express sürümleri ile entegre olup, uygulamaları dağıtmak için düşük yatırım sağlar.
İlk 10 Kayıt :
SELECT * FROM Employees ORDER BY [Hire Date] 
OFFSET 10 ROWS;

SELECT * FROM Customers  ORDER BY [Customer ID] 
OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY; 
 
Kaynak : http://blogs.msdn.com/b/sqlservercompact/archive/2010/07/07/introducing-sql-server-compact-4-0-the-next-gen-embedded-database-from-microsoft.aspx

15 Haziran 2010 Salı

System.Math Sınıfı ve Metotları.

Genel methodlar

Metot Açıklama
Abs(x) Bir sayının mutlak değerini tutar.
Cos(x) Bir sayının kosinüsünü tutar.
Sin(x) Bir sayının sinüsünü tutar.
Tan(x) Bir sayının tanjantını tutar.
Ceiling(x)  x sayısından büyük en küçük tam sayıyı tutar (yukarı yuvarlama).
Floor(x) x sayısından küçük en büyük tam sayıyı tutar (aşağı yuvarlama).
Max(x,y) x ve y sayılarının en büyüğünü tutar.
Min(x,y) x ve y sayılarının en küçüğünü tutar.
Pow(x,y) x üzeri y'yi tutar.
Sqrt(x) x'in karekökünü tutar.
Log(x) x sayısının e tabanında logaritmasını tutar.
Exp(x) e üzeri x'in değerini tutar.
Log10(x) x sayısının 10 tabanındaki logaritmasını tutar.

int a = Math.Max(10,34);
int b = Math.Abs(-3);
double c = Math.Ceiling(12.67);
Kaynak : http://msdn.microsoft.com/en-us/library/system.math.aspx
Math sınıfının tüm üyeleri : http://msdn.microsoft.com/en-us/library/system.math_members.aspx 

2 Haziran 2010 Çarşamba

Unable to find manifest signing certificate in the certificate store.

Unable to find manifest signing certificate in the certificate store. Mesajı ile karşılaşıyorsanız, projemizi build edebilmemiz için bu hatadan kurtulmamız gerekmektedir.
 

Solution Explorer da projemizin üzerinde sağ tıklayıp Properties > Signing > Create Test Certificate butonunu tıklayıp bir şifre girmemizi isteyecek şifreyi girip Ok butonuna bastığımızda TemporaryKey oluşturulacaktır. 

Artık projemizi derleyebiliriz.