में फिर से लिखना हमारे पास एक लंबे समय से चल रहे एएसपी.NET वेब-फॉर्म एप्लिकेशन हैं जो .NET 1.1/IIS6 दिनों में पैदा हुए थे। अब हम .NET4.5/IIS7 पर हैं लेकिन हमने एमवीसी के साथ कुछ भी नहीं किया है।यूआरएल एएसपी.NET 4.5 और वेब एपीआई
हम ग्राहकों के लिए एक सूची प्रदान करते हैं और उन्हें एक यूआरएल वे उपयोग कर सकते हैं दे:
www.ourhost.com/customername
एक कस्टम IHttpModule हम विकसित हम डेटाबेस में ग्राहक खोजने के लिए URL से बाहर 'CUSTOMERNAME' खींच का उपयोग करना। उस ग्राहक की आईडी को तब पृष्ठ के संदर्भ में संग्रहीत किया जाता है * और उस ग्राहक के लिए सामग्री को कस्टमाइज़ करने के लिए साइट पर लगभग सभी पृष्ठों द्वारा उपयोग किया जाता है। इस प्रक्रिया के बाद, ऊपर URL फिर से लिखा और index.aspx उसके संदर्भ के माध्यम से ग्राहक की आईडी के लिए उपयोग होने और यह अपनी बात कर सकते हैं के साथ
www.ourhost.com/index.aspx
के रूप में संसाधित किया जाएगा।
यह बहुत अच्छा काम करता है और हम इसके साथ कई हजार ग्राहकों का समर्थन करते हैं। पुनर्लेखन तर्क काफी जटिल है क्योंकि यह ग्राहक खातों को मान्य करता है, यदि ग्राहक अमान्य है और ग्राहक को भुगतान नहीं किया गया है तो एक 'डीलर' पृष्ठ पर अलग-अलग 'डीलर' पृष्ठ पर रीडायरेक्ट किया जाता है।
अब मैं कुछ वेब एपीआई नियंत्रकों को बनाना चाहता हूं और एमवीसी-स्टाइल रीराइटिंग मुझे चिंतित है। मैं कई उदाहरण देखने जहां नए सिरे से लिखना यूआरएल बनाने के लिए यह काम की तरह होता है:
www.ourhost.com/api/{controller}
लेकिन मैं अभी भी इन वेब API 'कॉल' की जरूरत है एक ग्राहक के संदर्भ में होने की। हमारे पेज JSON/AJAX async कॉल के साथ अधिक परिष्कृत हो रहे हैं लेकिन उन कॉलों का उत्तर देने में मुझे अभी भी ग्राहक संदर्भ की आवश्यकता है। मैं यूआरएल
www.ourhost.com/customername/api/{controller}
होने के लिए लेकिन मैं कैसे यह करने के लिए मार्ग कॉन्फ़िगर और यह हमारे IHttpModule के साथ अच्छी तरह खेलते हैं के लिए के रूप में स्टम्प्ड हूँ चाहते हैं।
क्या यह भी संभव है?
* अद्यतन: जब मैं 'पृष्ठ संदर्भ में संग्रहीत' कहता हूं, मेरा मतलब है कि प्रत्येक वेब अनुरोध से जुड़े HttpContext जिसमें एक शब्दकोश शामिल है जहां मैं कुछ पेज/अनुरोध-विशिष्ट डेटा संग्रहीत कर सकता हूं।
जब आप "पृष्ठ के संदर्भ में संग्रहीत" कहते हैं - क्या आप 'सत्र' ऑब्जेक्ट का जिक्र कर रहे हैं, या आप सीधे किसी प्रकार की 'कुकी' पर लिख रहे हैं? चूंकि आपने इस 'वेब-एपीआई' को टैग किया है, इसलिए इससे थोड़ा अंतर आता है। –
@ ट्रॉय: टिप्पणी के लिए धन्यवाद - मैंने स्पष्टीकरण के साथ अपना प्रश्न अपडेट कर लिया है। – n8wrl
समझ गया - आप अपने लॉग-इन उपयोगकर्ता कौन हैं इसका ट्रैक रखने के लिए आप 'HttpContext.Current.User' का उपयोग कर रहे हैं? आप इसे बाद के कॉल में कैसे बना रहे हैं जिसमें यूआरएल में उपयोगकर्ता का उपयोगकर्ता नाम शामिल नहीं है? –