Qaysi veb-serverdan koddan foydalanilganligini aniqlang

ASP.NET veb-ilovasining Cassini veb-serverida yoki IIS-da ishlayotganligini pragmatik tarzda aytish mumkinmi?

Orqa fon va so'raladigan sabab:

Bizning ilovalarimizning bir nechtasida biz kirish sahifasida oddiy login sozlamalarini mashina nomini tekshirib yoki Mijozning IP-manzili mahalliy yoki yo'qligini tekshirib, ko'rib chiqamiz. (127.0.0.1 yoki 1::), shuning uchun biz tajribamizni sinovdan o'tkaza olamiz va biz rivojlanish kompyuterlarimizda disk raskadrovka vaqtida ilovani boshqacha bajarishimiz mumkin.

Mashina nomi yondashuvi OK, lekin biz yangi Dev-kompyuterni olganimizda kodni o'zgartirishimiz kerak. Bu juda tez-tez emasligini tushunaman, lekin u o'zini behuda his qiladi. Bundan tashqari, bir nechta ishlab chiquvchilar bilan ishlayotgan bo'lsak, "if" iborasida barcha mashinalarimizni ro'yxatga olishimiz kerak.

"Localhost" yondashuviga kelsak, uni yoqtirmayman. Yana bir hujum joyini qo'shganday tuyuladi. Men veb-serverlardan biriga kirishni, uni mahalliy sifatida ishlashni va narsalarni ko'rishni tashvishlantiraman.

Veb-sayt Cassini veb-serveriga ega bo'lgan Visual Studio'dan ishlayotganini aniqlash uchun koddan qandaydir yo'l bormi, deb o'ylayman.

2
qo'shib qo'ydi muallif codingbadger, manba
Bu boshqacha - u disk raskadrovka rejimida ishlayotganligini qanday qilib ko'rsatishni so'raydi. Visual Studio-da erkin rejimida osonlik bilan bo'lishi mumkin.
qo'shib qo'ydi muallif David, manba
Rahmat, lekin bu savol uchun emas. IP-manzilni tekshirishdan ko'ra toza kod, lekin ayni shu xavotirga ega. Bu yaxshi fikr.
qo'shib qo'ydi muallif David, manba

2 javoblar

IIS ostida ishlaydigan ServerVariables to'plamining SERVER_SOFTWARE xususiyati Microsoft-IIS/7.5 kabi bir narsa haqida xabar beradi.

Afsuski, bu Cassini ostida ishlayotgan paytda bo'sh ko'rinadi.

Men sizni himoya qilishni xohlaysizmi, bilmayman, chunki siz xavfsizlik haqida xavotirga tushib qolsangiz, kerakli xatti-harakatga qarama-qarshi ko'rinadi.

sharhlardan:

System.Diagnostics.Process.GetCurrentProcess() ni tekshiring ProcessName Cassini uchun "WebDev.WebServer40" va IIS uchun "w3wp"

string processName= System.Diagnostics.Process.GetCurrentProcess().ProcessName;
if (processName == "WebDev.WebServer40")
{
  //testing
  //Insert code that you want to happen if this is running in Visual Studio
}

Agar bu IISda ishlayotgan bo'lsa, pName o'zgaruvchisi "w3wp" bo'ladi. Visual Studio .NET 4.0 ilovasida "WebDev.WebServer40" dir. (Men tekshirib ko'rmadim, lekin ASP.NET 2.0 uchun WebDev.WebServer20 bo'ladi deb o'ylayman)

2
qo'shib qo'ydi
Juda ham xavfsiz emas. Biz buni haqiqatdan ham aniq ma'lumotga ega bo'lgan har qanday narsadan foydalanmaymiz. Buning eng yomoni, bir do'kon etakchisi bo'lishi mumkin, bu tuman rahbari uchun mo'ljallangan ma'lumotni ko'radi. Hech qanday moliyaviy va ishlashi yo'q. Boshqa tizimdan (OpenIdga o'xshash) o'tgan foydalanuvchi identifikatoridan foydalanadigan ichki saytlarda joylashgan va biz veb-sayt ma'lum bir foydalanuvchi ostida qanday ko'rinishini ko'rish uchun uni chetlab o'tishni xohlaymiz. Bu aslida mukammaldir. Men uni sinab ko'raman.
qo'shib qo'ydi muallif David, manba
Darn. Ishlamadi. Buni tasavvur qilaman, chunki IIS bizni efirga uzatmasligi uchun tuzilgan. Baribir rahmat!
qo'shib qo'ydi muallif David, manba
Men topdim! Sizning javobingiz meni to'g'ri yo'ldan ozdirish uchun etarlicha yaqin edi. System.Diagnostics.Process.GetCurrentProcess() protsedurasini tekshirdim Cassini uchun "WebDev.WebServer40" va IIS uchun "w3wp" Agar sizning javobingizni men izlayotgan men emas edi, Shuning uchun agar siz o'zingizni o'zgartirmoqchi bo'lsangiz, buni qabul qilaman, shuning uchun uni tushunishga intilayotgan keyingi odam uni topishi mumkin.
qo'shib qo'ydi muallif David, manba
Ha, men o'z savollarga javob berishdan nafratlandim, ayniqsa boshqalar vaqtni sinab ko'rishsa.
qo'shib qo'ydi muallif David, manba
Dovudga rahmat, rahmat!
qo'shib qo'ydi muallif starskythehutch, manba
@David Agar javob yangilanmagan bo'lsa, uni o'zingiz javob bering va to'g'ri deb belgilang. Men buni juda chiroyli kod bo'lishini topdim.
qo'shib qo'ydi muallif rick schott, manba

Qurilish belgilaridan foydalana olmaysizmi? Qurilish belgilaringizni o'rnating va keyin #IF PROD qiling va keyin autentifikatsiyani boshqaring. Shunday qilib, disk raskadrovka rejimida bo'lganingizda, autentifikatsiyani butunlay o'chirib tashlaydi. Umid qilamanki bu yordam!

0
qo'shib qo'ydi