Asp.Net Core web uygulamalarinda HTTPS adreslere yönlendirme

Bir Asp.Net Core web uygulamasında, HTTP adresleri engellemek ve HTTPS adresleri kullanmak isteyebiliriz.

Action methodların üzerine, Controller sınıflarının üzerine veya GlobalFilters listesine ekleyebildiğimiz RequireHttpsAttribute sınıfı sayesinde, web uygulamamızdaki adreslerin HTTP üzerinden erişilmesini engelleyebiliyoruz.

Uyarı
Yukarıdaki kod parçaları, HTTP üzerinden gelecek tüm istekleri engeller. Böylece HTTP protokolü üzerinden gelen istekler işlenmemiş olur. Aslında yapmamız gereken, HTTP istekleri HTTPS adreslere yönlendirmek olmalı. Yani istekler işlenmeyecek şekilde engellenmez, HTTPS protokolünü kullanan adresler üzerinden cevaplanır

HTTP protokolü üzerinden gelen istekleri HTTPS protokolü üzerinden çalışan adreslere yönlendirmek için aşağıdaki kodu kullanabiliriz;

Configure() methodu içerisinde çağırdığımız UseRewrite(options) methodu ile, HTTP istekleri HTTPS adreslere dönüştürebiliyoruz.

Global Game Jam 2018

Global Game Jam 2018 etkinliği 26 Ocak 2018 - 28 Ocak 2018 tarihleri arasında İzmir Ekonomi Üniversitesi‘nde gerçekleştirildi.

Ben de konuşmacı , mentor ve juri üyesi sıfatları ile etkinliğe katıldım ve açıkçası çok keyifli zaman geçirdim.

Global Game Jam nedir?

Global Game Jam, IGDA (International Game Developers Association - Uluslararası Oyun Geliştiricileri Derneği) Eğitim Odak Grubu‘nun yönlendirmesiyle ortaya çıkan, tüm dünyada eş zamanlı gerçekleştirilen bir oyun geliştirme etkinliğidir.

GGJ dünyada oyun geliştirilmesi amacıyla birçok öğrenciyi, profesyoneli ve akademisyeni bir araya getiren dünya genelindeki en büyük oyun geliştirme organizasyonudur.

GGJ 2018 etkinliğinde, dünya genelinde 109 ülkede 804 etkinlik alanında 42783 katılımcı ile 9281 oynanabilir oyun yalnızca 48 saat içerisinde geliştirilmiştir. GGJ etkinliğine ev sahipliği yapan etkinlik merkezleri yerel oyun sektörünün gelişmesine katkı sağlarken, katılımcılara çeşitli açılardan faydalar sağlamaktadır.

Asp.Net Core uygulamalarında Environment (Ortam) bilgisine göre Database ConnectionString (Veritabanı Bağlantı Cümlesi) belirlemek

Geçen yıl geliştirmeye başladığımız birkaç bin adam/gün sürecek koca bir ERP uygulamasında, Web API projesinin yayınlandığı ortama göre Database ConnectionString‘e (Veritabanı Bağlantı Cümlesi) sahip olması gerekiyordu.

Örneğin, ConnectionString, Development ortamında Development veritabanını, Test ortamında Test veritabanını, Staging ortamında Staging veritabanını, Production ortamında Production veritabanını göstermeliydi.

Eğer Asp.Net Core Web API uygulamasının, çalıştığı ortama göre (Environment) otomatik olarak ConnectionString bilgisini belirlemesini sağlayabilirsem, uygulamanın çeşitli ortamlara yayılması gerektiğinde, ConnectionString‘i güncelleme derdinden kurtulabilirdim.

Hatta, her developerın bilgisayarının isminin de ConnectionString‘te olmasını sağlayabilirsem, aynı anda geliştirme yapan birden fazla developer‘ın, birbirlerinin veritabanı değişikliklerinden etkilenmesini de engelleyebilirdim.

Bunu gerçekleştirmek için, öncelikle projede yeni bir AppDataContext.cs dosyası oluşturdum ve Microsoft.EntityFrameworkCore kütüphanesini kullanarak veritabanını ve tabloları modelledim;

Startup.cs dosyasında yer alan ConfigureServices() methoduna aşağıdaki kodları yazdım;

AddDbContextPool() methodu sayesinde, uygulamada AppDataContext sınıfı her gerektiğinde (Dependency Injection ve IoC - Inversion of Control yöntemleri ile) sağlanacak olan AppDataContext değişkenini yapılandırdım.

Burada dikkat edilmesi gereken nokta, SqlConnectionStringBuilder sınıfı sayesinde, varolan ConnectionString bilgisini değiştirip, yenisini oluşturabiliyoruz.

Environment bilgilerini kullanıp, hatta IsDevelopment() methodu ile gerekirse developer bilgisayarının ismini de kullanıp, yeni ConnectionString ürettim ve bu ConnectionString‘i UseSqlServer() methodu içerisinde kullandım.

Böylece farklı ortamlarda (Environment) ConnectionString aşağıdakiler gibi oldu;

  • Database_Production
  • Database_Test
  • Database_Staging
  • Database_Development_Ahmet
  • Database_Development_Mehmet
  • Database_Development_Ayse

Son olarak, AppConnectionString değişkenini, appsettings.json dosyası içerisinde aşağıdaki gibi tanımladım;

Bu makaleyi yazarken Martin Ullrich‘in makalesinden de faydalandım

THY Travel Hackathon Aralık 2017

Türk Hava Yolları 22 Aralık 2017, 23 Aralık 2017 ve 24 Aralık 2017 tarihlerinde THY Travel Hackathon isminde bir etkinlik düzenledi.

Ben de Azure, Xamarin, Asp.Net Core ve Chatbot konularında katılımcılara teknik yardımlarda bulunmak için etkinlikte görev aldım.

Akdeniz Bilişim Zirvesi 2017 Etkinliği

09 Aralık 2017 tarihinde Mimar Sinan Kongre Merkezi, Antalya‘da Akdeniz Bilişim Zirvesi 2017 etkinliği gerçekleştirildi.

Ben de Unity3D ile Cross-Platform Oyun Geliştirme konulu oturumda konuşmacı olarak yer aldım.

Katılan tüm arkadaşlara teşekkür ederim.

Engin Polat hakkında

Chief Architect, Microsoft RD, Microsoft MVP

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 482

Creative Commons Lisansı