C #/ASP.NET da to'g'ri URLni qanday saqlash kerak?

Menga turli xil narsalarni ko'rsatgandan keyin "qidiruv natijalari" ni ko'rsatadigan kod va uning bir sahifasi berildi, u foydalanuvchidan yozuvlardan birini bosishga imkon beradi va maxsus tanlangan yozuvni o'zgartirishi uchun sahifani ochishi kerak.

Biroq, men sahifani (IE tomonidan) "Bu sahifa ko'rsatilmaydi" deb tarjima qilmoqchi bo'lsa.

It is obvious the URL is wrong because first I see something http://www.Something.org/Search.aspx then it turns into http://localhost:61123/ProductPage.aspx

Kodni qidirib, quyidagi satrni topdim: menimcha bu sabab. Endi, savol berishim kerak:

Statik bir URLdan qochish va uni dinamik qilish uchun nima qilishim kerak, shuning uchun har doim to'g'ri domenga ishora qilishim mumkin?

string url = string.Format("http://localhost:61123/ProductPage.aspx?BC={0}&From={1}", barCode, "Search");

Response.Redirect(url);

Rahmat.

1
@ Mortanning javobi albatta qabul qilinishi kerak. Asosiy kompyuter nomi faqat o'zaro faoliyat domenga o'tayotganingizda, uchinchi tomon API so'rovi haqida gapirganda, avvalgi ko'rinishda bo'ladi. Joriy domenda qolishni istasangiz, nisbatan URL-lardan foydalaning. Davr.
qo'shib qo'ydi muallif Nikhil Vartak, manba
@ Mortanning javobi albatta qabul qilinishi kerak. Asosiy kompyuter nomi faqat o'zaro faoliyat domenga o'tayotganingizda, uchinchi tomon API so'rovi haqida gapirganda, avvalgi ko'rinishda bo'ladi. Joriy domenda qolishni istasangiz, nisbatan URL-lardan foydalaning. Davr.
qo'shib qo'ydi muallif Nikhil Vartak, manba
URL manzillaringizda nisbatan yo'llarni sinab ko'rdingizmi?
qo'shib qo'ydi muallif maccettura, manba
URL manzillaringizda nisbatan yo'llarni sinab ko'rdingizmi?
qo'shib qo'ydi muallif maccettura, manba
Xostni Request ob'ektidan ololmaysizmi? va unga yo'lni qo'shib qo'ying.
qo'shib qo'ydi muallif user3621898, manba
Xostni Request ob'ektidan ololmaysizmi? va unga yo'lni qo'shib qo'ying.
qo'shib qo'ydi muallif user3621898, manba

6 javoblar

URLni ko'rish uchun tekshiruvchiga HttpContext.Current.Request.Url dan foydalaning. Url siz izlayotgan narsangizni o'z ichiga olgan Xost , jumladan, ko'p narsalarni o'z ichiga oladi.

Aytgancha, siz eng so'nggi foydalanayotgan bo'lsangiz. Net 4.6+ quyidagi kabi string yaratishingiz mumkin:

string url = $"{HttpContext.Current.Request.Url.Host}/ProductPage.aspx?BC={barCode}&From={"Search"}";

Yoki string.Format-dan foydalanishingiz mumkin

string host = HttpContext.Current.Request.Url.Host;
string url = string.Format("{0}/ProductPage.aspx?BC={1}&From={2}"), host, barCode, "Search";
2
qo'shib qo'ydi
O'ylaymanki, nima deyayotganingizni bilaman, javobimni yangilayman.
qo'shib qo'ydi muallif Blue Eyed Behemoth, manba
Yangi String.Format sintaksisini yaxshi ko'raman, u juda toza!
qo'shib qo'ydi muallif Seano666, manba
Rahmat. Faqat aniqlik uchun quyidagi kabi narsalar mavjud: string url = HttpContext.Current.Request.Url.Host; url = string.Format ("http: //" + currentURL + "/Specific-Folder/Specific-Page.aspx?Query={0}", Var1);
qo'shib qo'ydi muallif amit kohan, manba

URLni ko'rish uchun tekshiruvchiga HttpContext.Current.Request.Url dan foydalaning. Url siz izlayotgan narsangizni o'z ichiga olgan Xost , jumladan, ko'p narsalarni o'z ichiga oladi.

Aytgancha, siz eng so'nggi foydalanayotgan bo'lsangiz. Net 4.6+ quyidagi kabi string yaratishingiz mumkin:

string url = $"{HttpContext.Current.Request.Url.Host}/ProductPage.aspx?BC={barCode}&From={"Search"}";

Yoki string.Format-dan foydalanishingiz mumkin

string host = HttpContext.Current.Request.Url.Host;
string url = string.Format("{0}/ProductPage.aspx?BC={1}&From={2}"), host, barCode, "Search";
2
qo'shib qo'ydi
O'ylaymanki, nima deyayotganingizni bilaman, javobimni yangilayman.
qo'shib qo'ydi muallif Blue Eyed Behemoth, manba
Yangi String.Format sintaksisini yaxshi ko'raman, u juda toza!
qo'shib qo'ydi muallif Seano666, manba
Rahmat. Faqat aniqlik uchun quyidagi kabi narsalar mavjud: string url = HttpContext.Current.Request.Url.Host; url = string.Format ("http: //" + currentURL + "/Specific-Folder/Specific-Page.aspx?Query={0}", Var1);
qo'shib qo'ydi muallif amit kohan, manba

Xost-segmentni Web.Config dosyaning AppSettings qismida saqlashingiz mumkin (konfiguratsiya/atrof-muhit kabi)

Debug/Loyihalash Web.Config

enter image description here

Production/Release Web.Config (config mahalliyhost qiymatini something.org host bilan almashtirishni bekor qilish bilan)

enter image description here

va keyin uni kodi kabi foydalaning.

           //Creates a URI using the HostUrlSegment set in the current web.config
        Uri hostUri = new Uri(ConfigurationManager.AppSettings.Get("HostUrlSegment"));

           //does something like Path.Combine(..) to construct a proper Url with the hostName 
           //and the other url segments. The $ is a new C# construct to do string interpolation
           //(makes for readable code)
        Uri fullUri = new Uri(hostUri, $"ProductPage.aspx?BC={barCode}&From=Search");

           //fullUrl.AbosoluteUri will contain the proper Url 
        Response.Redirect(fullUri.AbsoluteUri);

Uri sinfida sizga Aloqador URL , AbsoluteUrl , sizning URL Fragments , Xost nomi va h.k.

enter image description here

1
qo'shib qo'ydi

Xost-segmentni Web.Config dosyaning AppSettings qismida saqlashingiz mumkin (konfiguratsiya/atrof-muhit kabi)

Debug/Loyihalash Web.Config

enter image description here

Production/Release Web.Config (config mahalliyhost qiymatini something.org host bilan almashtirishni bekor qilish bilan)

enter image description here

va keyin uni kodi kabi foydalaning.

           //Creates a URI using the HostUrlSegment set in the current web.config
        Uri hostUri = new Uri(ConfigurationManager.AppSettings.Get("HostUrlSegment"));

           //does something like Path.Combine(..) to construct a proper Url with the hostName 
           //and the other url segments. The $ is a new C# construct to do string interpolation
           //(makes for readable code)
        Uri fullUri = new Uri(hostUri, $"ProductPage.aspx?BC={barCode}&From=Search");

           //fullUrl.AbosoluteUri will contain the proper Url 
        Response.Redirect(fullUri.AbsoluteUri);

Uri sinfida sizga Aloqador URL , AbsoluteUrl , sizning URL Fragments , Xost nomi va h.k.

enter image description here

1
qo'shib qo'ydi

Buni qilish kerak.

string url = string.Format("ProductPage.aspx?BC={0}&From={1}", barCode, "Search");
Response.Redirect(url);

Agar siz Net 4.6+ dan foydalanayotgan bo'lsangiz, siz bu simli interpolatsiya versiyasini ham ishlatishingiz mumkin

string url = $"ProductPage.aspx?BC={barcode}&From=Search";
Response.Redirect(url);

Xost nomini joriy domenda qoldirish uchun qoldirib qo'yishingiz kerak.

1
qo'shib qo'ydi
Xush kelibsiz!!
qo'shib qo'ydi muallif Nikhil Vartak, manba
Yaxshi rahmat, Nikxil :)
qo'shib qo'ydi muallif Morten Røermose, manba

Buni qilish kerak.

string url = string.Format("ProductPage.aspx?BC={0}&From={1}", barCode, "Search");
Response.Redirect(url);

Agar siz Net 4.6+ dan foydalanayotgan bo'lsangiz, siz bu simli interpolatsiya versiyasini ham ishlatishingiz mumkin

string url = $"ProductPage.aspx?BC={barcode}&From=Search";
Response.Redirect(url);

Xost nomini joriy domenda qoldirish uchun qoldirib qo'yishingiz kerak.

1
qo'shib qo'ydi
Xush kelibsiz!!
qo'shib qo'ydi muallif Nikhil Vartak, manba
Yaxshi rahmat, Nikxil :)
qo'shib qo'ydi muallif Morten Røermose, manba