ontedi
www.ontedi.com
Kullanıcı
-
Üyelik
03.10.2013
-
Yaş/Cinsiyet
44 / E
-
Meslek
Yazılım Uzmanı, Matematikçi
-
Konum
Ankara
-
Ad Soyad
S** T**
-
Mesajlar
1118
-
Beğeniler
325 / 324
-
Ticaret
2, (%100)
Hocam, "e" adlı dizin/dosya bulunamadı diyor. Büyük ihtimal
Context.RewritePath("~/e"); şeklinde bir hata yeri belirtmişsin.
www.ontedi.com
www.cizgi.site
-
Üyelik
22.02.2016
-
Yaş/Cinsiyet
35 / E
-
Meslek
Web Master
-
Konum
İstanbul Avrupa
-
Ad Soyad
Y** A**
-
Mesajlar
11
-
Beğeniler
3 / 1
-
Ticaret
0, (%0)
Peki hocam yardımlarınız teşekkür ederim söyle bir olabilir mi?
Çok araştırmasını yaptım dediğiniz gibi querystring boşsa boş bir HTML Sayfası her halükarda göstermekte bunun alternatif olarak count yöntemini yapabilir miyiz. Mesela çekilen veri 0 kelime ise beni ya 404.aspx sayfasına yada ana sayfaya yönlendirsin böyle bir mantık yürütebilir miyiz. Eğer olabilirse peki nasıl yapabiliriz tekrar teşekkür ederim iyi akşamlar...
ontedi
www.ontedi.com
Kullanıcı
-
Üyelik
03.10.2013
-
Yaş/Cinsiyet
44 / E
-
Meslek
Yazılım Uzmanı, Matematikçi
-
Konum
Ankara
-
Ad Soyad
S** T**
-
Mesajlar
1118
-
Beğeniler
325 / 324
-
Ticaret
2, (%100)
Hocam yapılabilir. Global.asax ve url parametreleri ile aranız nasıl?
Çünkü Global.asax üzerinde gelen url değerlerinde kes, parçala vs.. işlemleri yapılmaktadır.
www.ontedi.com
www.cizgi.site
-
Üyelik
22.02.2016
-
Yaş/Cinsiyet
35 / E
-
Meslek
Web Master
-
Konum
İstanbul Avrupa
-
Ad Soyad
Y** A**
-
Mesajlar
11
-
Beğeniler
3 / 1
-
Ticaret
0, (%0)
Merhabalar,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
public partial class sayfa : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
OleDbConnection baglanti = new OleDbConnection();
baglanti.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~\\App_Data\\veri.accdb"));
baglanti.Open();
if (Request.QueryString["id"] != null)
{
int sayi = Int16.Parse(Request.QueryString["id"].ToString());
OleDbDataAdapter adaptor = new OleDbDataAdapter("select * from sayfa where Kimlik=" + sayi, baglanti);
DataTable tablo = new DataTable();
adaptor.Fill(tablo);
Baslik.Text = tablo.Rows[0]["baslik"].ToString();
Icerik.Text = tablo.Rows[0]["icerik"].ToString();
}
baglanti.Close();
// Response.Write(Request.QueryString["sf"]);
}
}
Bu şekilde bir kaç değişlik yaptım table.Row 0 ve altında ise uyarı vermekte şimdi size sorum bu uyarıyı Response.Redirect yöntemi yada farklı yöntemlerle nasıl başka bir sayfaya yada server 404 hatası yapabiliriz. Benim QueryString de olmayan idleri bir şekilde 404'de bağlamam lazım nedeni başka bir projemde indexlenmiş 10000 den fazla urlyi bir anda kaldırınca arama motorları o urleri hala web sitede var olarak görüyor. Kaldırdığıma inanmaları için 404 HTTP Sunucu Hatasına ihtiyacım var.
ontedi
www.ontedi.com
Kullanıcı
-
Üyelik
03.10.2013
-
Yaş/Cinsiyet
44 / E
-
Meslek
Yazılım Uzmanı, Matematikçi
-
Konum
Ankara
-
Ad Soyad
S** T**
-
Mesajlar
1118
-
Beğeniler
325 / 324
-
Ticaret
2, (%100)
baglanti.Open();
if (Request.QueryString["id"] != null)
{
int sayi = Int16.Parse(Request.QueryString["id"].ToString());
OleDbDataAdapter adaptor = new OleDbDataAdapter("select * from sayfa where Kimlik=" + sayi, baglanti);
DataTable tablo = new DataTable();
adaptor.Fill(tablo);
Baslik.Text = tablo.Rows[0]["baslik"].ToString();
Icerik.Text = tablo.Rows[0]["icerik"].ToString();
}
else
{
Response.Redirect("/bulunamadi");
}
baglanti.Close();
Daha sonra Global.asax içerisinde şunu yapman gerekecek
void Application_BeginRequest(object sender, EventArgs e)
{
string strURL = Context.Request.Url.AbsoluteUri;
strURL = strURL.ToLower();
string[] arrParcalar = strURL.Split('/');
string strAna_Parca = arrParcalar[3];
if (arrParcalar.Length == 4)
{
//http://localhost:61479/bulunamadi
string strParca = arrParcalar[3];
if (strParca .IndexOf("bulunamadi") > -1)
{
Context.RewritePath("~/404.aspx");
}
}
}
www.ontedi.com
www.cizgi.site
-
Üyelik
22.02.2016
-
Yaş/Cinsiyet
35 / E
-
Meslek
Web Master
-
Konum
İstanbul Avrupa
-
Ad Soyad
Y** A**
-
Mesajlar
11
-
Beğeniler
3 / 1
-
Ticaret
0, (%0)
Hocam verdiğin kodlar işe yaramadı.
Aslında aradğım PHP deki fonksiyonun bir benzeri aşağıda göstermiş olduğum.
Bu yüzden PHP ye geri döneceğim ASP.NET güzel hoşta hız bakımından işlevsellik bakımından ama bilmeyince olmuyor.
Aşağıdaki kodun benzeri gibi düşünün url yapısını MYSQL dan kontrol ediyoruz yapıya uygun veri yok ise 404.php sayfasına yönlendiriyoruz. Ne yaptıysam olmadı yaptıklarımın hepsinde sonuçta gene bir boş html sayfasıyla karşılaştım.
$query = mysql_query("select * from settings"); while($print = mysql_fetch_array($query)){
$sor = mysql_query("select * from pages where sefurl='$url'"); if(mysql_num_rows($sor)=="0"){ header("Location:404.php"); }else{ while($yaz = mysql_fetch_array($sor)){ ?>
-
Üyelik
17.03.2016
-
Yaş/Cinsiyet
43 / E
-
Meslek
Bilgisayar Muhendisi
-
Konum
İstanbul Anadolu
-
Ad Soyad
Ö** H**
-
Mesajlar
702
-
Beğeniler
224 / 225
-
Ticaret
16, (%100)
Bos bir sayfa ile karsilasmamak icin ontedi nin verdigi ornegi debug ederseniz sorununuzu adim adim cozebilirsiniz.
if (arrParcalar.Length == 4)
{}
else
{
response.write("4 parca gelecek idi, gelmedi, neden acaba, bakalim gelen istek ne imis");
response.write(strURL);
}
-
Üyelik
17.03.2016
-
Yaş/Cinsiyet
43 / E
-
Meslek
Bilgisayar Muhendisi
-
Konum
İstanbul Anadolu
-
Ad Soyad
Ö** H**
-
Mesajlar
702
-
Beğeniler
224 / 225
-
Ticaret
16, (%100)
localhost,
Ben de arkadasi anlamadim ne istiyor. bos sayfa geliyorsa neden bos sayfa geldigini debug etsin diye yazdim ama sanirim arkadas istiyor ki buradan biz yazalim, orada direk calissin.
verdigin ornekte url in 4 parcali olmasi sart ama belki 3 parca kendi iis uzerinde, ondan debug etsin diye else ekledim.
Sanirim benim aciklamam yeterli ama arkadas ne istiyor o acik olmadi.
asagidaki kodda sanirim bu eksik, bu sekilde yaparsa olacak.
baglanti.Open();
if (Request.QueryString["id"] != null)
{
int sayi = Int16.Parse(Request.QueryString["id"].ToString());
OleDbDataAdapter adaptor = new OleDbDataAdapter("select * from sayfa where Kimlik=" + sayi, baglanti);
DataTable tablo = new DataTable();
adaptor.Fill(tablo);
if ( tablo.RowCount == 0 )
{
Response.Redirect("/404.aspx",true);
}
Baslik.Text = tablo.Rows[0]["baslik"].ToString();
Icerik.Text = tablo.Rows[0]["icerik"].ToString();
}
else
{
Response.Redirect("/bulunamadi");
}
baglanti.Close();
tablo.Rows[0] kullanmadan once tablo null mu ve rowcount >0 kontrolu olmali.
1 kişi bu mesajı beğendi.