Arama Sonuçları: '.Net Core'

.Net Core (1.0+) Platformunda Kimliğe Bürünme (Impersonation)

Impersonation kimliğe bürünme anlamına gelir. Windows Service veya Web uygulaması gibi sistem, IIS veya farklı genel bir kullanıcıya ait olarak çalışan uygulamalar mevcuttur. Bu uygulamalar üzerinden spesifik bir windows kullanıcısı yetkilendirmesi ile işlem yapmak isteyebilirsiniz. Dosya okuma ve yazma buna bir örnektir. Yazmak istediğiniz (ağdaki veya lokal) klasör sadece belli bir kullanıcıya okuma-yazma izni vermiş olabilir ve sizin de o kullanıcı kimliği ile işlem yapmanız gerekebilir. .Net Framework üzerinde bu işi WindowsImpersonationContext ile yapabiliyorduk ancak gördüğüm kadarı ile .Net Core ve sonrası artık bu yapıyı desteklemiyor.

.NetCore platformunda herhangi bir kullanıcıya bürünerek işlem yapabilmek için WindowsIdentity.RunImpersonated metoduna aksiyon (delege) geçebiliyoruz. Ben aşağıdaki gibi bir yardımcı sınıf kullanıyorum.
devamı için tıklayınız...


MemoryStream Kullanarak Zip Dosyası Oluşturmak

Diskte yer almayan, diskten okuyamadığımız ya da çalışma sırasında üretilmiş doküman içeriklerini kullanarak sıkıştırılmış doküman oluşturma ihtiyacımız olduğunu varsayıyorum. .Net Core platformunda yer alan System.IO.Compression kütüphanesindeki klasik ZipArchive sınıfını kullanarak ikili veriden (binary data) aşağıdaki gibi bir metod yardımı ile sıkıştırılmış doküman verisi elde edebiliriz. Daha sonra bu veriyi diske yazdırarak diskte zip dokümanı elde edeceğiz.

/// <summary>
/// Compresses file binaries with names and returns zip file binary.
/// </summary>
/// <param name="files">File name and content</param>
/// <returns>Zip binary content</returns>
public static byte[] CompressFiles(Dictionary<string, byte[]> files)
{
  using (var zipArchiveMemoryStream = new MemoryStream())
  {
    using (var zipArchive = new ZipArchive(zipArchiveMemoryStream, ZipArchiveMode.Create, true))
    {
      foreach (var file in files)
      {
        var fileContent = file.Value;
        var fileName = file.Key;
        var zipArchiveEntry = zipArchive.CreateEntry(fileName);
        
        using (var zipArchiveEntryStream = zipArchiveEntry.Open())
        using (var binaryWriter = new BinaryWriter(zipArchiveEntryStream))
        {
          binaryWriter.Write(fileContent);
        }
      }
    }
    
    return zipArchiveMemoryStream.ToArray();
  }
}

Metot basitçe aşağıdaki gibi kullanılabilir. Çalışma zamanı (runtime) esnasında rastgele txt doküman içerikleri oluşturarak ziplenecek dosyalara ekledim.
devamı için tıklayınız...


00:00:00
Saturday 15 Jan 2017
Altın Sözler
“Sadece bir şey, bir şey olarak kalıyorum, o da palyaço. Bu beni herhangi bir politikacıdan daha yüksek bir düzleme yerleştirir!”
Web hosting by Somee.com