lostyazilim
tr.link

Asp.Net querystring çekilen veri boşsa sunucu Hatası YARDIM

22 Mesajlar 4.065 Okunma
acebozum
tr.link

ontedi 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
wmaraci
reklam

yunusemrealtay yunusemrealtay WM Aracı Kullanıcı
  • Ü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 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

yunusemrealtay yunusemrealtay WM Aracı Kullanıcı
  • Ü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.
 

 

wmaraci
wmaraci

ontedi 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

yunusemrealtay yunusemrealtay WM Aracı Kullanıcı
  • Ü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)){ ?>













 

 

localhost localhost Atatürk! Kullanıcı
  • Üyelik 13.03.2016
  • Yaş/Cinsiyet 37 / E
  • Meslek Yazılımcı
  • Konum İstanbul Avrupa
  • Ad Soyad E** K**
  • Mesajlar 335
  • Beğeniler 145 / 144
  • Ticaret 2, (%100)
yunusemrealtay

Merhabalar,
Yapmak istediğiniz tam olarak nedir? Okumama rağmen anlayamadım.

Veritabanından veriyi çekiyorsunuz.
Request.QueryString ile id ye göre alıyorsunuz.
Olmayan id ' lerde ise 404 hatası istiyorsunuz.
 

 

https://roe.com.tr

ozgurgezen ozgurgezen WM Aracı Kullanıcı
  • Ü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);

}
 

 

localhost localhost Atatürk! Kullanıcı
  • Üyelik 13.03.2016
  • Yaş/Cinsiyet 37 / E
  • Meslek Yazılımcı
  • Konum İstanbul Avrupa
  • Ad Soyad E** K**
  • Mesajlar 335
  • Beğeniler 145 / 144
  • Ticaret 2, (%100)
ozgurgezen olayı tam olarak anlayamadım. Amaç nedir? Veritabanın da o id yoksa 404.aspx gibi bir sayfaya yönlendirmek mi?
 

 

https://roe.com.tr

ozgurgezen ozgurgezen WM Aracı Kullanıcı
  • Ü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.
yunusemrealtay

kişi bu mesajı beğendi.

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al