24 Eylül 2020 Perşembe

IIS HTTPS Yönlendirme - ReWrite

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="HTTPS force" enabled="true" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

17 Eylül 2020 Perşembe

IIS Üzerinde Ücretsiz SSL alma (90 günlük) sslforfree

https://manage.sslforfree.com/certificate/new sayfasından sihirbazı izleyip domain onayını aldıktan sonra indirme yapıyoruz.Domain onayı almak için "/.well-known/pki-validation/{key}" altında bir doğrulama dosyası isteyecek. Bunun için uygulama altına Virtual Directory açmamız gerekiyor ".well-known" sanal yolunu "C:\VirtualDirectory\well-known" yapabilirsin kafana göre. Sonra onay çin gerekli dosyayı istediği yola atıp onaylaman gerekiyor.

https://decoder.link/converter adresinden tamamlanacak olan sertifikayı convert ediyoruz

 ca_bundle.crt

Certificate File to Convert = certificate.crt 

Chain Certificate File (optional) Private Key File= private.key

Type To Convert To = PFX/PKCS#12

PFX Password = (Boş bırakılabilir)

seçiyoruz, convert dediğimizde "certificate.pfx" adında bir dosya oluşturacak. Bunu IIS üzerinde SSL Sertifikaları bölümünden "Complete Certificate Request" veya "Sertifika İsteğini Tamamla" diyip, sertifikaya akılda kalıcı bir isim verdikten sonra işlemi tamamlıyorsunuz. Artık uygulamanızın bindings kısmında 443 olan https domainin SSL certificate'ini yüklediğiniz sertifikayı atayabilirsiniz.

 



Angular + .Net Core Uygulamayı IIS üzerinde aynı site üzerinde yayınlama

IIS üzerinde

angular-site.com site açılır. Add Aplication'dan aynı dizin içine "Api" klasörü seçilir. Buraya .Net Core Uygulama atılır. Daha sonra Angular uygulamada terminale

ng build --prod

yazılıp build alınır. dist klasörüne çıkan angular-site klasörü içindeki dosyalar IIS üzerindeki  angular-site.com sitesinin ana dizinine kopyalanır. Angular uygulamanın web.config aşağıdaki gibi olmalıdır. (iis rewrite eklentisini kurmak gerekiyor).

 <?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Angular Routes" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_URI}" pattern="api/" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="./index.html" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

 

Dikkat edilmesi gereken satır 

<add input="{REQUEST_URI}" pattern="api/" negate="true" />

 yani diyoruz ki http isteklerinde api/ ile başlayanları angulara yönlendirme bu sayede api klasörü altındaki .Net Core uygulamaya gidiyor.

Peki bunu neden yaptık? normalde angular-site.com ve api.angular-site.com şeklinde 2 uygulamayı aynı iis üzerinde yayınlamak istedik. Uygulama içinde konum almak gerektiği ve angular içinde apiye istek gittiği için iki uygulamada https olması gerekiyordu. https://manage.sslforfree.com üzerinden aldığım free ssl'ler aynı anda 1 tanesi kullanılabildiği için işime yaramadı, wildcards almadığımız için uygulama patladı. Bu yüzden aynı uygulama içinde birleştirip 1 ssl ile işimizi gördük


15 Eylül 2020 Salı

JavaScript dizi kopyalama , referanssız

 1. JSON.parse(JSON.stringify(input))

 

2.

let oldArray = [1, 2, 3, 4, 5];

let newArray = oldArray.slice(); 
 
 
 

 

8 Eylül 2020 Salı

Ubuntu klasör izni

 klasöre kullanıcı yetkisi yok ve root kullanıcısı istiyorsa o klasöre 777 yetkisi verirsek tüm kullanıcılara yetki vermiş oluyoruz. dikkatli kullanmak lazım     

chmod -R 777 /www/store

.net 6 mapget kullanımı

 app.UseEndpoints(endpoints => {     endpoints.MapGet("/", async context =>     {         var response = JsonConvert.Seriali...