Ocelot, .NET ile geliştirilmiş API Gateway’dir. Gateway genellikle micro service mimarisi veya birçok api endpointlerini tek bir adres üzerinden yönetmenizi sağlar. HTTP kullanan ve .NET Core desteği ile herhangi bir platformda çalışabilir.
Okumaya devam etKategori arşivi: ASP.NET
DTO ve AutoMapper Nedir? Nasıl kullanılır?
En başta DTO yani Data Transfer Object kullanım alanını açıklamak gerekirse, bir kaynaktan aldığımız veriyi, kullanacağımız yere göre hazırladığımız sınıflara DTO denir. Bu dil bağımsız bir yöntemdir.
Okumaya devam etASP.NET Web API 2’de İsteklere İzin Verme
Tarayıcı güvenliği için bir web sayfasıdan başka bir web sayfasına AJAX isteklerini engeller. Bu hassas verilerin korunmasını sağlar. Bazen de API çağrılarına izin vermek isteyebilirsiniz.
İzin vermek için W3C standartı olan CORS kullanırız. CORS bize istek yapanları, metodları ve headerları filtrelememize olanak verir.
Visual Studio Projelerinde Yüklenen NuGet Paketlerin Farklı Sürüm Problemi
NuGet severek kullandığım bir extension ama solationa eklediğiniz projeler arasında yüklediğiniz paketler arasında versiyon uyumsuzluğu olabilir. Bir de çok n-layered bir mimariniz varsa gözden kaçanlar da olabilir. Gözünüzden kaçarsa output penceresinde aşağıdaki gibi bir hatayı görebilirsiniz.
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.
Paketler arasındaki bu uyumsuzluğu düzeltmek için, NuGet gerekli önlemi unutmamış 🙂 Solution üzerinde NuGet Paket Yönetimine girdiğinizde 4. bir sekme göreceksiniz. Bütün projelerinizi tarayıp, uyumsuz olan paketleri size göstermektedir.
string Tipinde Gelen Türkçe Tarihi DateTime Tipine Çevirmek
Araştırmak neredeyse yarım günümü alan bir sorunumu sizlerle paylaşmak istedim.
Üstünde çalıştığım projede, string tipinde gelen ve de formatı “dd MM yyyy DD” tarihi DateTime tipine çevirmem gerekiyordu. Tipini değiştirmem için Parse fonksiyonunu kullanmam lazım ama tarihin culture bilgisi olmadan gelen tarihi algılaması mümkün olmuyor. Aşağıdaki gibi bir fonksiyon ile çözdüm.
public static DateTime StrLongDateToDateTime(string date) { DateTime dateTime = new DateTime(); #if DEBUG try { #endif if (!string.IsNullOrEmpty(date)) { string myTime = DateTime.Parse(date).ToString(CultureInfo.GetCultureInfo("tr-TR").DateTimeFormat.ShortDatePattern); dateTime = DateTime.Parse(myTime); } #if DEBUG } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } #endif return dateTime; }
MVC Model’inde Nesneyi Validasyon Haricinde Tutmak
Model tasarımında nesnelerinizde validasyonu zorunlu tutabilirsiniz ama form işlemlerinde istediğiniz alanları ModelState Validate kontrolü haricinde tutmak istiyorsanız aşağıdaki örneği inceleyebilirsiniz.
ModelState.Remove("NESNE_ADI"); if (ModelState.IsValid) { // Prosedürler }
ASP.NET MVC’de HTML5 data-* Attributes Kullanımı
MVC’de form controlleri eklerken HMTL5 attributes kullanmak isteyebilirsiniz ama data-* attributes’leri içindeki “-” aritmatik bir operatör olduğu için sayfanız hata verecektir. Proplemi aşmak için “_” çizgi kullanmanız yeterlidir.
Örnek:
@Html.TextBoxFor(model => model.MAIL, new { @class = "form-control", @placeholder = "mail@alanadi.com", @data_required = "email" })
ASP.NET MVC ile Post Edilen Html Kodları (ValidateInput)
MVC ile hazırladığımız sayfalarda CKEditör gibi zengin metin editörü kullanıyorsak, sayfamızı post ettiğimizde aşağıdaki gibi hata alabiliriz.
“[HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client…”
Bu hata aslında bir güvenlik önlemi olup, sayfada html ve js kodları yürütmeyi engellemektedir. Eğerki kontrol panelinizde kullanacaksanız metodunuzun üstüne [ValidateInput(false)] attribute belirtmeniz yeterli olacaktır.
MVC Model’deki Date Alanları Proplemi ve Çözümü
Sql Server’da oluşturduğunuz tablodaki date tipindeki alanlarının form kontrollerinde oluşan sorunu çözmek için aşağıdaki js kodunu kullanmanız yeterlidir.
$.validator.setDefaults({ ignore: '.ignore' }); $.validator.methods["date"] = function (value, element) { return true; }; $.validator.methods.range = function (value, element, param) { var globalizedValue = value.replace(",", "."); return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]); }; $.validator.methods.number = function (value, element) { return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value); };
Ayrıca eğer form elemanınızın kontrol edilmeden atlanmasını istiyorsanız class attribute “ignore” eklemeniz yeterlidir. Örnek
class="ignore"
ASP.NET Cookie Türkçe Karakter Proplemi ve Çözümü
Üzerinde çalıştığım projede session ile yaptığım kısımları cookie olarak değiştirmem gerekiyordu. Düzenlemeden sonra cookielerden gelen değerlerde türkçe karakter problemi olduğu gördüm. Bu sorunu UrlEncode ile çözebilirsiniz ama yazılım sürecini uzatıyor. web.config ile daha kolay bir şekilde çözüme ulaşabilirsiniz.