.Net etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
.Net etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Haziran 2022 Cumartesi

Türkçe Sezar Şifreleme Uygulaması C#

 Sezar şifreleme karakter kaydırma özelliğine dayalı basit bir şifreleme egzersizi olarak düşünülebilir. Kaydırma işlemi genellikle C dilindeki char bir değişken ile integer bir değerin toplanması sonucu yeni bir char değer elde edilmesine dayanır. Örneğin C dilinde char degisken; degisken = 'A'; dediğiniz ve değişkeni degisken = degisken + 2 ; denildiğinde  C değerini alır. Bu işlem Sezar şifrelemede kolaylık sağlasa da büyük küçük harf ve Türkçe karakter işin içine girdiğinde oldukça çetrefilli olmakta. ASCII tablosu üzerinden kaydırma yapmak yerine belirlenen bir dizi üzerinden kaydırma yapmak Sezar şifreleme için daha güzel bir çözüm olacaktır. Bu nedenle aşağıdaki kod bloğunda öncelikli olarak bir karakter dizisi belirlenmiş girilen metin bu char dizinde kaçıncı karaktere karşılık geldiği yeni bir integer dizi ile tutulmuş ve kullanıcıdan alınan sayı kadar bu integer dizi kaydırılmıştır. Kaydırma işlemi sonucunda dizinin sonu geçip başa dönmesi için Mod işlemi kullanmakta kaçınılmaz olacaktır.

Bu sezar şifreleme uygulaması Windows form üzerinde geliştirilmiştir ve uygulamanın görüntüsü ve kodları şöyledir;

 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text;

namespace SezarSifrelemeWindows
{
    public partial class Form1 : Form
    {
        char[] harfler = { 'a', 'b', 'c' ,'ç','d','e','f','g','ğ','h','ı','i','j','k','l','m', 'n', 'o', 'ö', 'p', 'r','s', 'ş', 't', 'u', 'ü', 'v', 'y','z','A', 'B', 'C' ,'Ç','D','E','F','G','Ğ','H','I','İ','J','K','L','M', 'N', 'O', 'Ö', 'P', 'R','S', 'Ş', 'T', 'U', 'Ü', 'V', 'Y','Z', ' ','.',',','?','!','+','-','1', '2', '3', '4', '5', '6', '7', '8', '9', '0' };
        public Form1()
        {
            InitializeComponent();
        }


        private void btnsifrele_Click(object sender, EventArgs e)
        {
            char[] metin_char = txtmetin.Text.ToString().ToCharArray();
            int[] degerler = new int[txtmetin.Text.ToString().Count()] ;
          
            for (int i = 0; i < metin_char.Length; i++)
            {
                for (int k = 0; k < harfler.Length; k++)
                {
                    if (metin_char[i] == harfler[k])
                    {
                        degerler[i] = k;
                    }
                }
            }

            for (int m = 0; m < degerler.Count(); m++)
            {
                degerler[m] += Convert.ToInt16(combo_sifrele.Text.ToString());
            }

            for (int r = 0; r < degerler.Count(); r++)
            {
                if (degerler[r] >= harfler.Length)
                    degerler[r] = degerler[r] % harfler.Length;
            }

            char[] sifreli_metin = new char[txtmetin.Text.ToString().Count()];

            for (int t  = 0; t < degerler.Length; t++)
            {

                sifreli_metin[t] = harfler[degerler[t]];
            }

            string str_sifreli_metin = new string(sifreli_metin);
            txtsifreli.Text = str_sifreli_metin;

        }

        private void btncoz_Click(object sender, EventArgs e)
        {
            char[] metin_char = txtsifreli.Text.ToString().ToCharArray();
            int[] degerler = new int[txtsifreli.Text.ToString().Count()];

            for (int i = 0; i < metin_char.Length; i++)
            {
                for (int k = 0; k < harfler.Length; k++)
                {
                    if (metin_char[i] == harfler[k])
                    {
                        degerler[i] = k;
                    }
                }
            }

            for (int m = 0; m < degerler.Count(); m++)
            {
                degerler[m] -= Convert.ToInt16(combo_coz.Text.ToString());
            }

            for (int r = 0; r < degerler.Count(); r++)
            {
                if (degerler[r] < 0)
                    degerler[r] = degerler[r] + harfler.Length;
            }

            char[] cozulmus_metin = new char[txtsifreli.Text.ToString().Count()];

            for (int t = 0; t < degerler.Length; t++)
            {

                cozulmus_metin[t] = harfler[degerler[t]];
            }

            string str_cozulmus_metin = new string(cozulmus_metin);
            txtmetin.Text = str_cozulmus_metin;
        }
    }
}

 


 

20 Ocak 2014 Pazartesi

Session Verileri Hosting Üzerindeki MSSQL Server Üzerinde Kullanmak

Merhaba Arkadaşlar.
Session verilerini MSSQL server üzerinde kullanmak sitemizde ciddi bir performans artışı ve login sürelerinin istediğiniz ölçüde uzatılmasını sağlar.
Daha önceki yazılarımızda asp.net session verileri mssql üzerinde kullanmayı anlatmıştık fakat sitemiz bir hosting kullanıyorsa kafamıza göre istediğimiz veritabanını ve iznini kullanamamaktayız.
Bu nedenle aşağıdaki adımları izleyerek hosting üzerindeki bir çok sys fonksiyonunu kullanmadan kendi başımıza session verilerini kurabiliriz.
1ADIM :Session databasini kurmak.
-önce hosting panelinden veritabanıadı , kullanıcı adı ve şifre bilgilerini oluşturmalız.
-daha sonra hangi framework kullanıyorsak  onun altındaki dosyayı çalıştırmalız
C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regsql.exe -S veritabanı_adı_adresi
 -U kullanıcı_adı -P sifre -A all -d database_adı
-----------------------------------------------------------------------------------------------------
Microsoft (R) ASP.NET SQL Kayıt Aracı sürüm 4.0.30319.18408
SQL sunucusuna ASP.NET özelliklerini yüklemek veya bunları kaldırmak için kullan
ılan yönetim yardımcı programı.
Telif hakkı (C) Microsoft Corporation. Tüm hakları saklıdır.
Bu özellikleri ekleme işlemini başlat:
Membership
Profile
RoleManager
Personalization
SqlWebEventProvider
.............
Tamamlandı.
--------------------------------------------------------------------------------------------------------
Şeklinde veritabanını istediğimiz şekilde oluşturuyoruz.
Daha sonra web.config içine aşağıdaki satırları eklemelisiniz (system.web içine eklenmeli)
  <system.web>
<sessionState mode="SQLServer" sqlConnectionString="Data Source=Database_adı;Initial Catalog=veritabanı;User ID=kullanıcı;Password=şifre" cookieless="false" timeout="120" />
  </system.web>

eğer hosting firmanız oluşturduğunuz veritabanına db_owner yetkisini vermişse herhangi bir sorun yaşamadan siteniz hatasız açılacaktır fakat db_owner yetkisi sa kullanıcında ise ve hosting firmanız yetkiyi vermezse ozaman MSSQL server bazı fonksiyonlarını bizim elle eklememiz gerekli.Bu fonksiyonların başında TempGetVersiyon fonksiyonu bulunmakta.

Aşağıda vermiş olduğum bu stored procedure tüm ihtiyaç duyulan fonksiyonları kendisi eklemekte.
Bu stored procedure Microsoft SQL server Management studio ile çalıştırıp hata almamışsanız.Artık session verilerinizi veritabanı üzerinde tutuyorsunuz demektir.

Türkçe hiç bir yerde bu konuyla ilgili bilgi bulamadığım için ekliyorum.2 günlük hata ayıklamının sonucu yazılmıştır.Umarım işinize yarar.


/*********************************************************************
 InstallSqlState.SQL

 Installs the tables, and stored procedures necessary for
 supporting ASP.NET session state on SQL Azure.

 Copyright Microsoft, Inc.
 All Rights Reserved.

 *********************************************************************/

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[happylifesessionTempSessions]') AND type in (N'U'))
DROP TABLE [dbo].[happylifesessionTempSessions]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[happylifesessionTempApplications]') AND type in (N'U'))
DROP TABLE [dbo].[happylifesessionTempApplications]
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'GetMajorVersion') AND (type = 'P')))
DROP PROCEDURE [dbo].GetMajorVersion
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'CreateTempTables') AND (type = 'P')))
DROP PROCEDURE [dbo].CreateTempTables
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetVersion') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetVersion
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'GetHashCode') AND (type = 'P')))
DROP PROCEDURE [dbo].GetHashCode
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetAppID') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetAppID
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetStateItem') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetStateItem
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetStateItem2') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetStateItem2
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetStateItem3') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetStateItem3
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetStateItemExclusive') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetStateItemExclusive
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetStateItemExclusive2') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetStateItemExclusive2
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempGetStateItemExclusive3') AND (type = 'P')))
DROP PROCEDURE [dbo].TempGetStateItemExclusive3
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempReleaseStateItemExclusive') AND (type = 'P')))
DROP PROCEDURE [dbo].TempReleaseStateItemExclusive
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempInsertUninitializedItem') AND (type = 'P')))
DROP PROCEDURE [dbo].TempInsertUninitializedItem
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempInsertStateItemShort') AND (type = 'P')))
DROP PROCEDURE [dbo].TempInsertStateItemShort
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempInsertStateItemLong') AND (type = 'P')))
DROP PROCEDURE [dbo].TempInsertStateItemLong
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempUpdateStateItemShort') AND (type = 'P')))
DROP PROCEDURE [dbo].TempUpdateStateItemShort
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempUpdateStateItemShortNullLong') AND (type = 'P')))
DROP PROCEDURE [dbo].TempUpdateStateItemShortNullLong
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempUpdateStateItemLong') AND (type = 'P')))
DROP PROCEDURE [dbo].TempUpdateStateItemLong
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempUpdateStateItemLongNullShort') AND (type = 'P')))
DROP PROCEDURE [dbo].TempUpdateStateItemLongNullShort
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempRemoveStateItem') AND (type = 'P')))
DROP PROCEDURE [dbo].TempRemoveStateItem
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'TempResetTimeout') AND (type = 'P')))
DROP PROCEDURE [dbo].TempResetTimeout
GO

IF (EXISTS (SELECT name FROM sysobjects WHERE (name = N'DeleteExpiredSessions') AND (type = 'P')))
DROP PROCEDURE [dbo].DeleteExpiredSessions
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.GetMajorVersion
@@ver int OUTPUT
AS
BEGIN
DECLARE @version nchar(100)
DECLARE @dot int
DECLARE @hyphen int
DECLARE @SqlToExec nchar(4000)

SELECT @@ver = 7
SELECT @version = @@Version
SELECT @hyphen = CHARINDEX(N' - ', @version)
IF (NOT(@hyphen IS NULL) AND @hyphen > 0)
BEGIN
SELECT @hyphen = @hyphen + 3
SELECT @dot = CHARINDEX(N'.', @version, @hyphen)
IF (NOT(@dot IS NULL) AND @dot > @hyphen)
BEGIN
SELECT @version = SUBSTRING(@version, @hyphen, @dot - @hyphen)
SELECT @@ver = CONVERT(int, @version)
END
END
END
GO

/*****************************************************************************/


CREATE PROCEDURE dbo.CreateTempTables
AS
CREATE TABLE [happylifesession].dbo.happylifesessionTempSessions (
SessionId  nvarchar(88) NOT NULL PRIMARY KEY,
Created datetime NOT NULL DEFAULT GETUTCDATE(),
Expires datetime NOT NULL,
LockDate datetime NOT NULL,
LockDateLocal  datetime NOT NULL,
LockCookie int NOT NULL,
Timeout int NOT NULL,
Locked bit NOT NULL,
SessionItemShort VARBINARY(7000) NULL,
SessionItemLong image  NULL,
Flags  int NOT NULL DEFAULT 0,
)

CREATE NONCLUSTERED INDEX Index_Expires ON [happylifesession].dbo.happylifesessionTempSessions(Expires)

CREATE TABLE [happylifesession].dbo.happylifesessionTempApplications (
AppId  int NOT NULL PRIMARY KEY,
AppName char(280)  NOT NULL,
)

CREATE NONCLUSTERED INDEX Index_AppName ON [happylifesession].dbo.happylifesessionTempApplications(AppName)

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetVersion
@ver char(10) OUTPUT
AS
SELECT @ver = "2"
RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.GetHashCode
@input varchar(280),
@hash int OUTPUT
AS
/*
 This sproc is based on this C# hash function:

int GetHashCode(string s)
{
int hash = 5381;
int len = s.Length;

for (int i = 0; i < len; i++) {
int c = Convert.ToInt32(s[i]);
hash = ((hash << 5) + hash) ^ c;
}

return hash;
}

However, SQL 7 doesn't provide a 32-bit integer
type that allows rollover of bits, we have to
divide our 32bit integer into the upper and lower
16 bits to do our calculation.
*/

DECLARE @hi_16bit  int
DECLARE @lo_16bit  int
DECLARE @hi_t  int
DECLARE @lo_t  int
DECLARE @len int
DECLARE @i int
DECLARE @c int
DECLARE @carry int

SET @hi_16bit = 0
SET @lo_16bit = 5381

SET @len = DATALENGTH(@input)
SET @i = 1

WHILE (@i <= @len)
BEGIN
SET @c = ASCII(SUBSTRING(@input, @i, 1))

/* Formula:
 hash = ((hash << 5) + hash) ^ c */

/* hash << 5 */
SET @hi_t = @hi_16bit * 32 /* high 16bits << 5 */
SET @hi_t = @hi_t & 0xFFFF /* zero out overflow */

SET @lo_t = @lo_16bit * 32 /* low 16bits << 5 */

SET @carry = @lo_16bit & 0x1F0000 /* move low 16bits carryover to hi 16bits */
SET @carry = @carry / 0x10000 /* >> 16 */
SET @hi_t = @hi_t + @carry
SET @hi_t = @hi_t & 0xFFFF /* zero out overflow */

/* + hash */
SET @lo_16bit = @lo_16bit + @lo_t
SET @hi_16bit = @hi_16bit + @hi_t + (@lo_16bit / 0x10000)
/* delay clearing the overflow */

/* ^c */
SET @lo_16bit = @lo_16bit ^ @c

/* Now clear the overflow bits */
SET @hi_16bit = @hi_16bit & 0xFFFF
SET @lo_16bit = @lo_16bit & 0xFFFF

SET @i = @i + 1
END

/* Do a sign extension of the hi-16bit if needed */
IF (@hi_16bit & 0x8000 <> 0)
SET @hi_16bit = 0xFFFF0000 | @hi_16bit

/* Merge hi and lo 16bit back together */
SET @hi_16bit = @hi_16bit * 0x10000 /* << 16 */
SET @hash = @hi_16bit | @lo_16bit

RETURN 0
GO

/*****************************************************************************/

DECLARE @cmd nchar(4000)

SET @cmd = N'
CREATE PROCEDURE dbo.TempGetAppID
@appName varchar(280),
@appId int OUTPUT
AS
SET @appName = LOWER(@appName)
SET @appId = NULL

SELECT @appId = AppId
FROM [happylifesession].dbo.happylifesessionTempApplications
WHERE AppName = @appName

IF @appId IS NULL BEGIN
BEGIN TRAN

SELECT @appId = AppId
FROM [happylifesession].dbo.happylifesessionTempApplications WITH (TABLOCKX)
WHERE AppName = @appName

IF @appId IS NULL
BEGIN
EXEC GetHashCode @appName, @appId OUTPUT

INSERT [happylifesession].dbo.happylifesessionTempApplications
VALUES
(@appId, @appName)

IF @@ERROR = 2627
BEGIN
DECLARE @dupApp varchar(280)

SELECT @dupApp = RTRIM(AppName)
FROM [happylifesession].dbo.happylifesessionTempApplications
WHERE AppId = @appId

RAISERROR(''SQL session state fatal error: hash-code collision between applications ''''%s'''' and ''''%s''''. Please rename the 1st application to resolve the problem.'',
18, 1, @appName, @dupApp)
END
END

COMMIT
END

RETURN 0'
EXEC(@cmd)
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetStateItem
@id nvarchar(88),
@itemShort varbinary(7000) OUTPUT,
@locked bit OUTPUT,
@lockDate  datetime OUTPUT,
@lockCookie int OUTPUT
AS
DECLARE @length AS int
DECLARE @now AS datetime
SET @now = GETUTCDATE()

UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, @now),
@locked = Locked,
@lockDate = LockDateLocal,
@lockCookie = LockCookie,
@itemShort = CASE @locked
WHEN 0 THEN SessionItemShort
ELSE NULL
END,
@length = CASE @locked
WHEN 0 THEN DATALENGTH(SessionItemLong)
ELSE NULL
END
WHERE SessionId = @id

IF @length IS NOT NULL BEGIN
SELECT [SessionItemLong] FROM [happylifesession].dbo.happylifesessionTempSessions WHERE SessionId = @id
END

RETURN 0

GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetStateItem2
@id nvarchar(88),
@itemShort varbinary(7000) OUTPUT,
@locked bit OUTPUT,
@lockAge int OUTPUT,
@lockCookie int OUTPUT
AS
DECLARE @length AS int
DECLARE @now AS datetime
SET @now = GETUTCDATE()

UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, @now),
@locked = Locked,
@lockAge = DATEDIFF(second, LockDate, @now),
@lockCookie = LockCookie,
@itemShort = CASE @locked
WHEN 0 THEN SessionItemShort
ELSE NULL
END,
@length = CASE @locked
WHEN 0 THEN DATALENGTH(SessionItemLong)
ELSE NULL
END
WHERE SessionId = @id

IF @length IS NOT NULL BEGIN
SELECT [SessionItemLong] FROM [happylifesession].dbo.happylifesessionTempSessions WHERE SessionId = @id
END

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetStateItem3
@id nvarchar(88),
@itemShort varbinary(7000) OUTPUT,
@locked bit OUTPUT,
@lockAge int OUTPUT,
@lockCookie int OUTPUT,
@actionFlags int OUTPUT
AS
DECLARE @length AS int
DECLARE @now AS datetime
SET @now = GETUTCDATE()

UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, @now),
@locked = Locked,
@lockAge = DATEDIFF(second, LockDate, @now),
@lockCookie = LockCookie,
@itemShort = CASE @locked
WHEN 0 THEN SessionItemShort
ELSE NULL
END,
@length = CASE @locked
WHEN 0 THEN DATALENGTH(SessionItemLong)
ELSE NULL
END,
/* If the Uninitialized flag (0x1) if it is set,
 remove it and return InitializeItem (0x1) in actionFlags */
Flags = CASE
WHEN (Flags & 1) <> 0 THEN (Flags & ~1)
ELSE Flags
END,
@actionFlags = CASE
WHEN (Flags & 1) <> 0 THEN 1
ELSE 0
END
WHERE SessionId = @id

IF @length IS NOT NULL BEGIN
SELECT [SessionItemLong] FROM [happylifesession].dbo.happylifesessionTempSessions WHERE SessionId = @id
END

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetStateItemExclusive
@id nvarchar(88),
@itemShort varbinary(7000) OUTPUT,
@locked bit OUTPUT,
@lockDate  datetime OUTPUT,
@lockCookie int OUTPUT
AS
DECLARE @length AS int
DECLARE @now AS datetime
DECLARE @nowLocal AS datetime

SET @now = GETUTCDATE()
SET @nowLocal = GETDATE()

UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, @now),
LockDate = CASE Locked
WHEN 0 THEN @now
ELSE LockDate
END,
@lockDate = LockDateLocal = CASE Locked
WHEN 0 THEN @nowLocal
ELSE LockDateLocal
END,
@lockCookie = LockCookie = CASE Locked
WHEN 0 THEN LockCookie + 1
ELSE LockCookie
END,
@itemShort = CASE Locked
WHEN 0 THEN SessionItemShort
ELSE NULL
END,
@length = CASE Locked
WHEN 0 THEN DATALENGTH(SessionItemLong)
ELSE NULL
END,
@locked = Locked,
Locked = 1
WHERE SessionId = @id

IF @length IS NOT NULL BEGIN
SELECT [SessionItemLong] FROM [happylifesession].dbo.happylifesessionTempSessions WHERE SessionId = @id
END

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetStateItemExclusive2
@id nvarchar(88),
@itemShort varbinary(7000) OUTPUT,
@locked bit OUTPUT,
@lockAge int OUTPUT,
@lockCookie int OUTPUT
AS
DECLARE @length AS int
DECLARE @now AS datetime
DECLARE @nowLocal AS datetime

SET @now = GETUTCDATE()
SET @nowLocal = GETDATE()

UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, @now),
LockDate = CASE Locked
WHEN 0 THEN @now
ELSE LockDate
END,
LockDateLocal = CASE Locked
WHEN 0 THEN @nowLocal
ELSE LockDateLocal
END,
@lockAge = CASE Locked
WHEN 0 THEN 0
ELSE DATEDIFF(second, LockDate, @now)
END,
@lockCookie = LockCookie = CASE Locked
WHEN 0 THEN LockCookie + 1
ELSE LockCookie
END,
@itemShort = CASE Locked
WHEN 0 THEN SessionItemShort
ELSE NULL
END,
@length = CASE Locked
WHEN 0 THEN DATALENGTH(SessionItemLong)
ELSE NULL
END,
@locked = Locked,
Locked = 1
WHERE SessionId = @id

IF @length IS NOT NULL BEGIN
SELECT [SessionItemLong] FROM [happylifesession].dbo.happylifesessionTempSessions WHERE SessionId = @id
END

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempGetStateItemExclusive3
@id nvarchar(88),
@itemShort varbinary(7000) OUTPUT,
@locked bit OUTPUT,
@lockAge int OUTPUT,
@lockCookie int OUTPUT,
@actionFlags int OUTPUT
AS
DECLARE @length AS int
DECLARE @now AS datetime
DECLARE @nowLocal AS datetime

SET @now = GETUTCDATE()
SET @nowLocal = GETDATE()

UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, @now),
LockDate = CASE Locked
WHEN 0 THEN @now
ELSE LockDate
END,
LockDateLocal = CASE Locked
WHEN 0 THEN @nowLocal
ELSE LockDateLocal
END,
@lockAge = CASE Locked
WHEN 0 THEN 0
ELSE DATEDIFF(second, LockDate, @now)
END,
@lockCookie = LockCookie = CASE Locked
WHEN 0 THEN LockCookie + 1
ELSE LockCookie
END,
@itemShort = CASE Locked
WHEN 0 THEN SessionItemShort
ELSE NULL
END,
@length = CASE Locked
WHEN 0 THEN DATALENGTH(SessionItemLong)
ELSE NULL
END,
@locked = Locked,
Locked = 1,

/* If the Uninitialized flag (0x1) if it is set,
 remove it and return InitializeItem (0x1) in actionFlags */
Flags = CASE
WHEN (Flags & 1) <> 0 THEN (Flags & ~1)
ELSE Flags
END,
@actionFlags = CASE
WHEN (Flags & 1) <> 0 THEN 1
ELSE 0
END
WHERE SessionId = @id

IF @length IS NOT NULL BEGIN
SELECT SessionItemLong FROM [happylifesession].dbo.happylifesessionTempSessions WHERE SessionId = @id
END

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempReleaseStateItemExclusive
@id nvarchar(88),
@lockCookie int
AS
UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, GETUTCDATE()),
Locked = 0
WHERE SessionId = @id AND LockCookie = @lockCookie

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempInsertUninitializedItem
@id nvarchar(88),
@itemShort varbinary(7000),
@timeout int
AS

DECLARE @now AS datetime
DECLARE @nowLocal AS datetime

SET @now = GETUTCDATE()
SET @nowLocal = GETDATE()

INSERT [happylifesession].dbo.happylifesessionTempSessions
(SessionId,
SessionItemShort,
Timeout,
Expires,
Locked,
LockDate,
LockDateLocal,
LockCookie,
Flags)
VALUES
(@id,
@itemShort,
@timeout,
DATEADD(n, @timeout, @now),
0,
@now,
@nowLocal,
1,
1)

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempInsertStateItemShort
@id nvarchar(88),
@itemShort varbinary(7000),
@timeout int
AS

DECLARE @now AS datetime
DECLARE @nowLocal AS datetime

SET @now = GETUTCDATE()
SET @nowLocal = GETDATE()

INSERT [happylifesession].dbo.happylifesessionTempSessions
(SessionId,
SessionItemShort,
Timeout,
Expires,
Locked,
LockDate,
LockDateLocal,
LockCookie)
VALUES
(@id,
@itemShort,
@timeout,
DATEADD(n, @timeout, @now),
0,
@now,
@nowLocal,
1)

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempInsertStateItemLong
@id nvarchar(88),
@itemLong  image,
@timeout int
AS
DECLARE @now AS datetime
DECLARE @nowLocal AS datetime

SET @now = GETUTCDATE()
SET @nowLocal = GETDATE()

INSERT [happylifesession].dbo.happylifesessionTempSessions
(SessionId,
SessionItemLong,
Timeout,
Expires,
Locked,
LockDate,
LockDateLocal,
LockCookie)
VALUES
(@id,
@itemLong,
@timeout,
DATEADD(n, @timeout, @now),
0,
@now,
@nowLocal,
1)

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempUpdateStateItemShort
@id nvarchar(88),
@itemShort varbinary(7000),
@timeout int,
@lockCookie int
AS
UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, @timeout, GETUTCDATE()),
SessionItemShort = @itemShort,
Timeout = @timeout,
Locked = 0
WHERE SessionId = @id AND LockCookie = @lockCookie

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempUpdateStateItemShortNullLong
@id nvarchar(88),
@itemShort varbinary(7000),
@timeout int,
@lockCookie int
AS
UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, @timeout, GETUTCDATE()),
SessionItemShort = @itemShort,
SessionItemLong = NULL,
Timeout = @timeout,
Locked = 0
WHERE SessionId = @id AND LockCookie = @lockCookie

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempUpdateStateItemLong
@id nvarchar(88),
@itemLong  image,
@timeout int,
@lockCookie int
AS
UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, @timeout, GETUTCDATE()),
SessionItemLong = @itemLong,
Timeout = @timeout,
Locked = 0
WHERE SessionId = @id AND LockCookie = @lockCookie

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempUpdateStateItemLongNullShort
@id nvarchar(88),
@itemLong  image,
@timeout int,
@lockCookie int
AS
UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, @timeout, GETUTCDATE()),
SessionItemLong = @itemLong,
SessionItemShort = NULL,
Timeout = @timeout,
Locked = 0
WHERE SessionId = @id AND LockCookie = @lockCookie

RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempRemoveStateItem
@id nvarchar(88),
@lockCookie int
AS
DELETE [happylifesession].dbo.happylifesessionTempSessions
WHERE SessionId = @id AND LockCookie = @lockCookie
RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.TempResetTimeout
@id nvarchar(88)
AS
UPDATE [happylifesession].dbo.happylifesessionTempSessions
SET Expires = DATEADD(n, Timeout, GETUTCDATE())
WHERE SessionId = @id
RETURN 0
GO

/*****************************************************************************/

CREATE PROCEDURE dbo.DeleteExpiredSessions
AS
DECLARE @now datetime
SET @now = GETUTCDATE()

DELETE [happylifesession].dbo.happylifesessionTempSessions
WHERE Expires < @now

RETURN 0
GO

/*****************************************************************************/

EXECUTE dbo.CreateTempTables
GO

/*************************************************************/
/*************************************************************/
/*************************************************************/
/*************************************************************/

PRINT ''
PRINT '------------------------------------------'
PRINT 'Completed execution of InstallSqlState.SQL'
PRINT '------------------------------------------'

IF NOT EXISTS(SELECT NAME FROM sys.sysusers where name='happylifesession')
BEGIN
CREATE USER [happylifesession] FOR LOGIN [happylifesession]
END
GO
EXEC sp_addrolemember N'db_datawriter', N'happylifesession'
GO
EXEC sp_addrolemember N'db_datareader', N'happylifesession'
GO
EXEC sp_addrolemember N'db_owner', N'happylifesession'
GO

12 Temmuz 2012 Perşembe

Entity Framework İlişkili tablolarda Insert İşlemi

Bir çok projemde Entity Framework kullandım.Fakat hep o ilişki sorgularda Entity framework e bir türlü aşina olamıyordum.Bu nedenle yeni geliştirdiğim bir projede entity framework zorlamaya karar verdim.Keşfettim ilk önemli bilgiyi sizinle paylaşak istedim.
Senaryom şöyle ;
 iki tablo birbiriyle ilişkili ve ben işlemler tabloma yeni kayıt girmek için şu kodu kullandım.

            CRMEntities entiti = new CRMEntities();
            islemler islemler_ = new islemler();
            islemler_.islem = strislem;
            islemler_.tarih_saat = DateTime.Now;
            if (genelkullanici.adi != null)
            {
                //newListing.Tbl_Category = DBEntities.Categories.Single(c => c.ID == 2);
                islemler_.kullanici = entiti.kullanici.First(c => c.id == genelkullanici.id);
            }

            else
                islemler_.kullanici = null;
            entiti.AddToislemler(islemler_);
            int saveChanges = entiti.SaveChanges();

Normalde işlemler tabloma yeni kayıt girmek için islemler.kullaniciid = genelkullanici.id girmem gerek fakat entityframework ilişkili tablolarda nesne girmemizi istiyor bu sebeble.
islemler_.kullanici = entiti.kullanici.First(c => c.id == genelkullanici.id);
 bu kod derdime derman oldu.

10 Kasım 2011 Perşembe

Javascript ile sayfa adını almak

web sitesi adresinizin www.tersduz.com/icerik.aspx olduğunu farz edin bu
elimizdeki javascript kodu bize icerik.aspx sayfa adının dönmesini sağlamakta.
        var sPath = window.location.pathname;

        //var sPage = sPath.substring(sPath.lastIndexOf('\\') + 1);

        var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);

Aşağıdaki kodlarda örneğin bir master page sahibim ve bu master page içerisinde
<ul>

            <li><a id="anasayfa"
href="default.aspx" class="current">Ana
Sayfa</a></li>
            <li><a id="matematikdersleri"
href="dersler.aspx">Matematik Dersleri</a></li>
            <li><a id="siteharitasi"
href="siteharitasi.aspx">Site Haritası</a></li>
            <li><a id="katkidabulunanlar"
href="katkida_bulunanlar.aspx">Katkıda Bulunanlar</a></li>
            <li><a id="okulumuz"
href="http://www.cumhuriyetioo.edu.tr">Okulumuz</a></li>

</ul>  

eğer kullanıcı sayfalar birisine tıkladığında örneğin dersler.aspx sayfasına
tıkladığında current classının anasayfadan gidip matematikderslere geçmesi
gerekli bunun için geliştirmiş olduğum
javascrip kodu şöyle oldu.
<script type="text/javascript">
    $(document).ready(function () {
         var sPath = window.location.pathname;
        //var sPage = sPath.substring(sPath.lastIndexOf('\\')
+ 1);
        var sPage = sPath.substring(sPath.lastIndexOf('/') +
1);
        if (sPage == "") {  
$("#anasayfa").addClass("current");        
$("#matematikdersleri").removeClass("current");
$("#siteharitasi").removeClass("current");
$("#katkidabulunanlar").removeClass("current");           
$("#okulumuz").removeClass("current");
        }
        else if (sPage == "dersler.aspx") {
$("#anasayfa").removeClass("current");
$("#matematikdersleri").addClass("current");
$("#siteharitasi").removeClass("current");           
$("#katkidabulunanlar").removeClass("current");
$("#okulumuz").removeClass("current");
        }
        else if (sPage == "siteharitasi.aspx") {
$("#anasayfa").removeClass("current");
$("#matematikdersleri").removeClass("current");           
$("#siteharitasi").addClass("current");
$("#katkidabulunanlar").removeClass("current");

$("#okulumuz").removeClass("current");
        }
        else if (sPage == "katkida_bulunanlar.aspx") {
$("#anasayfa").removeClass("current");
$("#matematikdersleri").removeClass("current");
$("#siteharitasi").removeClass("current");
$("#katkidabulunanlar").addClass("current");
$("#okulumuz").removeClass("current");
        }
    });
</script>


Eğer menunuz programatik olarak üretiliyorsa örenğin bir repater içerisinde
üretilen ul-li yapısı gibi
<asp:Repeater ID="menu_rpt" runat="server"
DataSourceID="sqlkaynak3">
<HeaderTemplate>
<li><a href="default.aspx" id="menu00"
class="current"><span></span>Anasayfa</a></li>          
</HeaderTemplate>             
<ItemTemplate>           
<li><a href='<%# "konsol.aspx?kategori=" + Eval("id") + "&konsol=" + Eval("adi")
%>' id='<%# "menu" + Eval("id") %>'><span></span><%# Eval("adi") %></a></li>     
</ItemTemplate>

 </asp:Repeater>
ozaman jquery kodlarımız asp.neet için şöyle olmalı
<script type="text/javascript">
    $(document).ready(function () {
        var secili = "menu" + '<%= lblsecilioge.Text %>';
  if (secili != "menuanasayfa") {
            $("#" + secili + "").addClass("current");
$("#menu00").removeClass("current");
        }
        else {
$("#menu00").addClass("current");

        }
    });

</script>

buradaki lblsecilioge.Text içeriği ise görünmeyen bir textbox olup içi söylece
dolduruluyor.
string secili = Request.QueryString["kategori"].ToString();
lblsecilioge.Text = secili;

2 Mayıs 2011 Pazartesi

.net için IIS ayarlamak

merhabalar
.net için IIS ayarlamak için aşağıda saydıklarımı yapabilirsiniz.
---denetim masasından >program ekle kaldır (Program özellikleri)>windows özelliklerini aç kapa>internet information service,  world web hizmetleri ve uygulama geliştirme özelliklerinden hepsini işaretleyin.

---Eğer önce framework kurulmuş daha sonra IIS kurulmuş ise aşağıdaki komutları komut istemiden çalıştırın (kommut istemine cmd ile ulaşabilirsiniz.)

%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\setup.exe

/repair /x86 /x64 /ia64 /parameterfolder Client /q /norestart

* 32 bit framework 4.0.30319 versiyon için;

%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Client\setup.exe

/repair /x86 /x64 /ia64 /parameterfolder Client /q /norestart

*64 bit için framework 4.0.30319 versiyon için;

daha sonra

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe –i

komutu çalıştırın

*** bu işlemi

HTTP Error 500.21 - Internal Server Error

Handler "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler"

in its module list.

---Bu işlemi yukarıdaki hata içinde yapabilirsiniz.

---Uygulama havuzları kısmında v.4 için yeni havuzlar oluşmakta.

---Uygulamanız için yeni default web site altına gelip framework 4.0 için uygulama havuzu ekleyebilirsiniz.