admin

Asp.Net Core and Cookies

Enable Cookies in Project for:

Startup.cs file in insert

And this using cookies for:
 string username = Request.Cookies["username"];
 string password = Request.Cookies["password"];

 

Asp.Net Core Session Not Working (Solution)

Startup.cs file in;

services.Configure<CookiePolicyOptions>(options =>
            {              
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

change to:
options.CheckConsentNeeded = context => false;

Kestrel Server Different Port with Run For Asp.Net Core (Nginx)

Create kestrel service:

nano /etc/systemd/system/kestrel-oguzhanabali.com.service
[Unit]
Description=Oguzhan ABALI Blog

[Service]
WorkingDirectory=/var/www/oguzhanabali.com
ExecStart=/usr/bin/dotnet /var/www/oguzhanabali.com/OguzhanAbali.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

Add the code below:

Environment=ASPNETCORE_URLS=http://localhost:5001

Asp.Net Core appsettings json get value in static class

Example appsettings:

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}

Create MyConfig name class and;

using Microsoft.Extensions.Configuration;
static class ConfigurationManager
{
    public static IConfiguration AppSetting { get; }
    static ConfigurationManager()
    {
        AppSetting = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json")
                .Build();
    }
}

Now you can use it like :

string value = ConfigurationManager.AppSetting["value_Key"];

Django Rest Framework Startup, Git Settings, Angular Build Commands

ng build –output-path=../reklamselfie-frontend-dist/public –env=test

ng build –prod –output-path=../reklamselfie-frontend-dist/public

—new version—-
ng build –prod –output-path=../reklamselfie-frontend-dist/public

ng build –configuration=test –output-path=../reklamselfie-frontend-dist/public

————————————————————————-

python manage.py runserver
python manage.py makemigrations blog
python manage.py migration
$ git config –global user.name “Name”
$ git config –global user.email you@example.com
git add -A
$ git commit -m “First commit”
$ git remote add origin https://github.com/<github-user-name>/my-project.git
$ git push -u origin master

DeprecationWarning: Chunk.modules is deprecated Hatası

Merhabalar,

Projeyi deploy yapmak için build etmeye çalışığımda (ng build –prod) böyle bir hata ile karşılaştım. Git’deki uzun issue incelemelerinden sonra bir sonuca varamadım. Anladığım kullandığım primeng adlı kütüphane webpack sürümüyle uyuşmuyordu webpack’i güncellediğimde ise webpack’in bağlı olduğu extract paketi arıza veriyordu.

Çözüm olarak;

1-npm cache clean

2-Build edeceğiniz bir path verin,

ng build –output-path=<yourpath>

Sorun çözülecektir.

İyi çalışmalar..

Angular 4 (Build) Module not found: Error

Merhabalar,

Dün projeyi deploy etmek için build etmeye çalıştığımda

(ng build –prod)

şöyle bir hata ile karşılaştım;

Module not found: Error: Can’t resolve ‘./$$_gendir/app/app.module.ngfactory’

Kodlarımda veya projemde sorun olmamasına rağmen gitden çekerken bir cacheleme oldu ve bu hatayı vermeye başladı.

Çözüm olarak aot ‘u devre dışı bıraktım;

ng build –prod –aot=false

Yorumlarınızı bekliyorum,

İyi çalışmalar.

Raw Sql Queries and Stored Procedure execution

Execute SQL query on existing entity

using (var context = new MyDBContext()) 
{ 
var posts = context.Posts.SqlQuery("SELECT * FROM dbo.Posts").ToList(); 
}

ToList() is mandatory here, otherwise query will not be executed, make sure you take care of sql injection attack if raw query is used

Execute Stored Procedure on existing entity

using (var context = new MyDBContext()) 
{ 
var posts = context.Posts.SqlQuery("dbo.spGetTopPosts").ToList(); 
}

 

ToList() is mandatory here, otherwise query will not be executed. Above code will execute Stored Procedure ‘spGetTopPosts’

Execute Stored Procedure with parameters on existing entity

using (var context = new MyDBContext()) 
{ 
var postID = 99; 
var posts = context.Posts.SqlQuery("dbo.spGetTopPosts @p0", postID).Single(); 
}

Single() is mandatory here, otherwise query will not be executed. Above code will execute Stored Procedure ‘spGetTopPosts’ with input paramter as postID

Execute SQL query on non-existing entity

using (var context = new MyDBContext()) 
{ 
var postTitles = context.Database.SqlQuery<string>("SELECT Title FROM dbo.Posts").ToList(); 
}

 

Execute SQL query by passing parameters

This is more better raw query as it avoid sql injections

using (var context = new MyDBContext()) 
{ 
var userSuppliedAuthor = new SqlParameter("@author", "Adi");
context.Database.SqlQuery(typeof(Post), "SELECT * FROM dbo.Posts WHERE Author = @author", userSuppliedAuthor);
}

Here the sql statement is executed on Posts table, so typeof(Post) is used. If a join statement is used on two different tables, then need to write an internal class for the returned values of sql statement.

Consider Posts, Category, Posts_Category tables exists. Posts_Category is mapping table of Posts – Id column and Category – Id column. If we want to execute sql join statement use the below code

internal class MappingData
{
public string CategoryTitle { get; set; }
public string PostTitle { get; set; }
public long? MappingId { get; set; }
}

using (var context = new MyDBContext())
{
var userSuppliedId = new SqlParameter("@PostId", PostID);
string sqlQuery = @"select c.Name CategoryTitle, pcm.Id MappingId, p.Title PostTitle from Posts_Categories pcm 
join Categories c on pcm.CategoryId = c.Id
join Posts p on pcm.PostId = p.Id where pcm.PostId =@PostId";
var Results = db.Database.SqlQuery<MappingData>(sqlQuery,userSuppliedId).ToList();
}
Results will be list of Categories of the given Post

Execute update SQL statment on non-existing entity

using (var context = new MyDBContext()) 
{ 

context.Database.ExecuteSqlCommand( 
"UPDATE dbo.Posts SET Title = 'Updated Title' WHERE PostID = 99"); 
}
For better understanding, summary extract of the method ‘SqlQuery’

 

Generate class from database table

TableName alanına tablo adını girip class üretebilirsiniz.

declare @TableName sysname = 'TableName'

declare @Result varchar(max) = 'public class ' + @TableName + '
{'

select @Result = @Result + '
public ' + ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; }
'
from
(
select 
replace(col.name, ' ', '_') ColumnName,
column_id ColumnId,
case typ.name 
when 'bigint' then 'long'
when 'binary' then 'byte[]'
when 'bit' then 'bool'
when 'char' then 'string'
when 'date' then 'DateTime'
when 'datetime' then 'DateTime'
when 'datetime2' then 'DateTime'
when 'datetimeoffset' then 'DateTimeOffset'
when 'decimal' then 'decimal'
when 'float' then 'float'
when 'image' then 'byte[]'
when 'int' then 'int'
when 'money' then 'decimal'
when 'nchar' then 'string'
when 'ntext' then 'string'
when 'numeric' then 'decimal'
when 'nvarchar' then 'string'
when 'real' then 'double'
when 'smalldatetime' then 'DateTime'
when 'smallint' then 'short'
when 'smallmoney' then 'decimal'
when 'text' then 'string'
when 'time' then 'TimeSpan'
when 'timestamp' then 'DateTime'
when 'tinyint' then 'byte'
when 'uniqueidentifier' then 'Guid'
when 'varbinary' then 'byte[]'
when 'varchar' then 'string'
else 'UNKNOWN_' + typ.name
end ColumnType,
case 
when col.is_nullable = 1 and typ.name in ('bigint', 'bit', 'date', 'datetime', 'datetime2', 'datetimeoffset', 'decimal', 'float', 'int', 'money', 'numeric', 'real', 'smalldatetime', 'smallint', 'smallmoney', 'time', 'tinyint', 'uniqueidentifier') 
then '?' 
else '' 
end NullableSign
from sys.columns col
join sys.types typ on
col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id
where object_id = object_id(@TableName)
) t
order by ColumnId

set @Result = @Result + '
}'

print @Result

 

C# İle Ping Atmak

Bu yazımda Csharpta herhangi web sitesinden her hangi bir bilgisayara nasıl ping atılacagını ve atıldıgını anlatmaya çalışacağım. Aslına bakarsanız bu olayı gerçekleştirmek sanıldıgı kadar zor değil, namespace’imize freamwork’un kütabanelerinden System.Net.NetworkInformation kütüphanesini eklemek bizim için yeterli olacaktır.
Namespace’imize System.Net.NetworkInformation kütüphanemizi ekledikten sonra button’umunuzun click eventine geliyoruz. Ve diyoruz ki;

protected void Button1_Click(object sender, EventArgs e)
{
Ping ping = new Ping();
PingReply DonenCevap = ping.Send(TextBox1.Text);
if (DonenCevap.Status == IPStatus.Success)
{
// server ip adresini verir.
Label1.Text += Donencevap.Address.ToString() + "<br/>";

//server cevap süresini ms cinsinden verir.
Label1.Text += Donencevap.RoundtripTime.ToString() + "<br/>";

//server ayayına başladıktan sonra geçen gün sayısını verir.
Label1.Text += Donencevap.Options.Ttl.ToString() + "<br/>";
}
else if (Donencevap.Status == IPStatus.TimedOut)
{
Label1.Text = ("Zaman Aşımına Uğradı.");
}
}

 

Bu kodlar sayesinde ping olayımızı gerçekleştirebiliyoruz. Teşekkürler bir dahaki yazımda görüşmek dileğiyle.