Author Archives: frtlkmn

.Net Core Cors Hatası Çözümü (access-control-allow-origin)

.net core projelerinde bazı hosting firmalarında get metodu kullanımında bir problem çıkmazken put ve delete metodlarında cors hatası vermektedir, bu sorun yazdığınız uygulamanın kodları ile alakalı olmayıp iis tarafından yapılan bir engellemedir.

Projeniz sunucu tarafına aktarıldıktan sonra web.config dosyasına aşağıdaki parametreleri ekleyerek bu sorunu çözebilirsiniz,

<handlers>
<remove name=”WebDAV” />
<remove name=”ExtensionlessUrlHandler-Integrated-4.0″ />
<remove name=”OPTIONSVerbHandler” />
<remove name=”TRACEVerbHandler” />
<add name=”aspNetCore” path=”*” verb=”*” modules=”AspNetCoreModule” resourceType=”Unspecified” />
</handlers>
<modules>
<remove name=”WebDAVModule” />
</modules>

Ayrıca .net core web projenize tüm diğer domain ve ortamlardan direkt erişilmesini istiyorsanız, aşağıdaki güncellemeleri yapmanızı tavsiye ederim.

Startup.cs dosyası içerisindeki, Configure fonksiyonu içerisine;

app.UseCors(
builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());

ConfigureServices metodu içerisine;

services.AddCors(o => o.AddPolicy(“MyPolicy”, builder =>
{
builder.AllowAnyOrigin();
builder.AllowAnyMethod();
builder.AllowAnyHeader();
builder.AllowCredentials();
}));

.Net Core ile WCF soap web servisine bağlanmak

Elinizde Wsdl dokümanı veya adresi varsa işiniz kolay, kullandığınız visual studio versiyonuna göre değişmekle birlikte 2019 versiyonundan kendisi yüklü gelen Wcf Web Service Reference Provider‘ı download yoluyla temin etmeniz gerekiyor, sonra aşağıdaki adımları izleyerek servisi projenize ekleyebilirsiniz.

net core wcf servisi

“Add Connected Service” kısmına tıklıyoruz.

.net core wcf servisi ekleme

Buraya authentication sorunu yaşayanlar için çok basit bir çözüm ekleyeceğim, benim gibi farklı tipte wcf web servisine bağlanmaya (consume etmeye) çalışanlar olursa diye; iki farklı şekilde Authorization ekleyebilirsiniz;

1- Servisin wsdl dokümanına ulaştınız ve visual studio için geliştirilmiş olan wcf web service reference provider kullanarak servisi consume ettiniz, fakat http request içerisine authorization ekleyemiyorsanız;

using (new OperationContextScope(WsClient.InnerChannel))
{
if(OperationContext.Current != null)
{
var httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = {BURAYA STRING TOKEN DEĞERİ GELECEK};
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
}

// BURADAN ÇAĞRINIZI YAPABİLİRSİNİZ

}

 

2. Servisin wsdl dokümanı mevcut değil, soap mesajlarını kendiniz oluşturdunuz fakat http request içerisine authorization token ekleyemiyorsanız;

WebRequest webRequest = WebRequest.Create(“{{ BURAYA SERVİS ADRESİ YAZILACAK }}”);

HttpWebRequest httpRequest = (HttpWebRequest)webRequest;
httpRequest.Method = “POST”;
httpRequest.Headers.Add(“content-type”, “text/xml”);
httpRequest.Headers.Add(“user-agent”, “Hesap Co”);
httpRequest.Headers.Add(“Authorization”, string.Format(“Basic {0}”, Convert.ToBase64String(Encoding.ASCII.GetBytes(Auth.RoleName + “:” + Auth.RolePass))));

 

Umarım yardımcı olabilmişimdir, burada yazılanlar .net core 2.0 versiyonunda geçerlidir, 2.2 versiyonundan birçok değişiklik yapılmıştır, buraya güncellemeye yazacağım.

Sorun çözülürse bir teşekkür yazmanız yeterli.

 

 

 

Facebook Uygulama Domain Hatası Çözümü

Facebook ile giriş yapılabilen, üye olunabilen bir web sitesi, web uygulaması geliştiriyorsanız bu veya benzeri bir hata almanız olası, bunun birkaç sebebi var. Öncelikle uygulamanın giriş isteğinde bulunacağı url adresi, sizin giriş yapacağınız adres ile en küçük noktalama işaretine kadar eşleşiyor olmalı.

facebook-domain-hatasi

“Bu bağlantı beyaz listede yer almıyor” gibi veya “URL Yüklenemedi: Bu bağlantının domaini uygulamanın domainlerinde yer almıyor. Bu bağlantıyı yükleyebilmek için, uygulama ayarlarından uygulamanın tüm domainlerini ve alt domainlerini Uygulama Domainleri alanına ekle.” gibi hatalar alıyorsanız, çözümü burada.

facebook-login-domain-hatasi

  1. Hatayı aldığınız yerde adres çubuğundan uygulamanızın hangi adresine callback yapıldığını tespit edin. redirect_uri= kısmından sonraki kısım sizin uygulamanızın callback url adresi.
  2. Bu adresi doğru bir şekilde Valid OAuth Redirect URIs kısmına yazın fakat sonundaki parametreleri eklemeyin. & veya ? soru işareti kısmından sonrasını eklemeyin.
  3. Adresi doğru bir şekilde, https ile başlayan kısımdan itibaren yazdığınızdan emin olduktan sonra, en sonuna bir taksim (slash, “/”)  karakteri daha ekleyin.

Halen bu adres uygulama domain’i içinde yer almıyor  veya beyaz listede değil gibi bir hata alıyorsanız aşağıdaki ekrandan app domains kısmına başında www ile ve olmadan iki farklı kullanım şeklini de ekleyiniz.facebook domain uygulama hatası

Şu şekilde bir hata alıyorsanız aşağıdaki ekrandan dönüş url adresini tam olarak yazınız, url parametreleri hariç.

“Error: Can’t Load URL: The domain of this URL isn’t included in the app’s domains”

facebook login, domain fix

Sorununuz halen çözülmediyse bu başlık altına yorum yazarsanız elimden gelen en kısa sürede yardımcı olmaya çalışırım.

 

Code First Auto Migration

With code first architecture you can simply migrate your database to live workspace. You just need to set migration configuration right, like below sample. With “DataLossAllowed” there aren’t any error related to migration, but you might lost live data.

migration

Code first mimaride değişiklik yaptığınız database’in otomatik olarak canlı ortama atılması için yukarıdaki kod örneğinde olduğu gibi küçük bir ayar gereklidir. “DataLossAllowed” parametresini girdiğiniz durumda yaptığınız değişiklik database veya tablo’nun yeniden yaratılmasını gerektiriyorsa canlı ortamda bu işlemi otomatik olarak yapacak ve data kaybı ile sonuçlanacaktır. Bu parametreyi kullanmayıp müdahale edilmesi gereken kısımlara manuel olarak müdahale edebilirsiniz.

Code First Projede Azure Database Sorunları

CodeFirst yapısı kullanırken mvc mimarisinde modelde bir değişiklik yaptığınızda dolayısıyla database tarafında da derlendikten sonraki ilk database erişim aşamasında gerekli model değişikliklerini entity framework gerçekleştiriyor.

Bu değişiklikleri gerçekleştirirken database’i silip, yeniden oluşturuyor, Azure üzerinde kullanıyorsanız sonuçlar çok vahim, eski database tanımlamanızı tamamen silip sıfırdan database oluşturduğu için bütün ayarlar değişiyor, standard paket yaratıyor ve collation değiştiği için verileriniz de bozuluyor.

Azure management tool üzerinde seçtiğiniz collation “Turkish_CI_AI” değişerek default olan  “SQL_Latin1_General_CP1_CI_AS” karakter setine geri dönmekte.

Screenshot_4

 

Dolayısıyla kullandığınız küçük ı harfleri yok olarak i olarak gözükmekte, bu da çok çirkin bir görüntü oluşturmaktadır.

Şimdi “bir tane alter database yazarım düzeltirim” diyeceksiniz ama azure’da “alter database” komutu kullanılamıyor.

Aşağıdaki kod bloğu azure kullanmıyorsanız işinizi görür.

Screenshot_5

Bu Durumu düzeltmenin yolu, code-first yapısında database’i silme ve yeniden yaratmayı kapatmak olacaktır. Collation sorununu çözsek bile azure üzerindeki db tanımlamalarımızı her seferinde sıfırdan yapmaktan kurtulmamız gerek.

Aşağıdaki kod bloğunda görülebileceği üzere SetInitializer(null) ile runtime’da database şema kontrolünü kapatmış oluyoruz, development ortamında yaptığımız değişiklikleri azure’a migration ile aktarmamız gerekiyor.

Screenshot_6

Microsoft Azure CLR Support (Microsoft Azure CLR Desteği)

Microsoft Azure Now supporting CLR functions,

Sometimes we need to implement CLR (Common Language Runtime) applications on our projects.

Azure Sql Server V12 Preview Edition now supporting CLR,

You can use SQL Database Migration Wizard tool for your migration process,

Azure sql server v12 preview edition sürümü CLR desteği sağlıyor,

eski database’den yenisine taşıma veya yerel sql sunucunuzdaki clr ile yaratılmış fonksiyonları kullanabilmek için SQL Database Migration Wizard kullanabilirsiniz

More information about Azure Sql Server V12 Preview Edition, follow this link;

Daha fazla bilgi için aşağıdaki link’i kullanabilirsiniz;

What’s new in the Latest SQL Database Update V12 (preview)

Wcf Test Client Hatalı Decimal Değerler

Wcf test client kullanırken, bir servise decimal değer göndermek istediğinizde, kesirli sayıları virgül ile ayırmanızı şart koşmakta. Fakat servis tarafına gelen bu değere baktığımızda virgül atılmış bir şekilde, tam sayı şeklinde gözükmektedir.

Bunun tek bir çözümü vardır. Bilgisayarınızın kesirli sayılar için uyguladığı bölge ayarları “United States (English)” değil ise, kesirli sayılar için kullanılan virgüller wcf test client tarafından yok sayılmaktadır.

Not : Bu noktaya kadar ve bu noktadan sonra bahsettiğim herşey windows işletim sistemi kullanıcıları için geçerli.

Kontrol Panelinde bulunan “bölge ve dil seçenekleri” ayarlarına ulaşarak bölgenizi değiştirip “unites states” ayarlarına getirip wcf test client’ı tekrar çalıştırdığınızda kesirli sayıları nokta ile yazmaya başlayacaksınız.

Bu işlemlerden sonra kesirli sayılar servis tarafına doğru biçimde ulaşacaktır, servis tarafında bir değişiklik yapmaya gerek yoktur. Wcf test client’ın bölgeye göre ayarlanmış olmamasından kaynaklanmaktadır. Belki ileriki sürümlerde bu sorun ortadan kalkar, kullandığım wcf test client sürümü “10.0.30319.1” visual studio 2010 ile birlikte gelen sürüm.

Konu ile ilgili stackoverflow’da açılmış bir başlık ta bulunmakta, şuradan takip edebilirsiniz.