2014-04-12 11 views
11

मेरे पास एक स्टॉक क्वेरी एप्लिकेशन है जो स्टॉक प्रतीक के आधार पर डेटा देता है।एएसपी.नेट एमवीसी 4 ... एक आरक्षित कीवर्ड "बीआईएन" है?

असल में, AJAX कॉल ~/Stocks/GetStockData/{id} पर जाता है जहां {id} स्टॉक प्रतीक है।

यह ठीक काम करता है ... आम तौर पर। आज मैंने पाया कि स्टॉक "प्रगतिशील अपशिष्ट समाधान लिमिटेड", जिसमें बीआईएन का प्रतीक है, उड़ा हुआ है। ब्राउज़र में रिटर्न डेटा को देखते हुए, मुझे लगता है कि यह इस प्रतीक के लिए 404 लौटा रहा है।

यह मेरे लिए हुआ कि बीआईएन एक आरक्षित शब्द हो सकता है, कुछ बाइनरी फ़ाइल या कुछ मांगना। क्या यह मामला है? मैं बिना किसी प्रयास के इस के आसपास कैसे काम करूं? क्या ऐसे अन्य कीवर्ड हैं जो इस समस्या का कारण बनेंगे?

अद्यतन

प्रति Artyom Neustroev, इस एक आरक्षित कीवर्ड हो सकता है, और करने के लिए मार्ग से संरक्षित किया जाएगा।

<configuration> 
    <system.web> 
    <httpRuntime relaxedUrlToFileSystemMapping="true"/> 

    <!-- ... your other settings ... --> 
    </system.web> 
</configuration> 

... जो मुझे आगे मिल गया: वह एक लेख जो एक वेबसाइट जो रास्ता कहा के आसपास इस config फ़ाइल में निम्न विन्यास सेटिंग जोड़ने के लिए था संदर्भित संदर्भित किया है।

HTTP Error 404.8 - Not Found 
The request filtering module is configured to deny a path in the URL that contains a hiddenSegment section. 

ठीक है, यह वास्तव में sorta समझ में आता है: इस के साथ मेरी साइट चल रहा पर, ajax कॉल एक 404.8 त्रुटि दिखाई। रूटिंग किसी को मेरी bin निर्देशिका में आने से रोकने के लिए सेट की गई थी, और मैं उस तरह की रोकथाम को स्वीकार करता हूं।

तो मैं सोच रहा हूं कि BIN, या CONFIG (सैद्धांतिक रूप से) जैसी सामग्री प्राप्त करने के तरीकों के किसी विशेष समूह को कैसे बताना है, इसके लिए एक निर्धारित मार्ग है?

मार्ग तंत्र खाता छिपा निर्देशिका और फ़ाइलें (web.config की तरह,/bin, आदि) में लेता है और उन्हें लोगों से छुपाता है:

+0

मुझे दृढ़ता से संदेह है। आप बस एक स्ट्रिंग वैल्यू ट्रांसमिट कर रहे हैं, कुछ और नहीं समझना चाहिए। क्या आपके पास कोई आंतरिक त्रुटि संदेश है जो हमारी मदद कर सकता है? –

+2

यह वास्तव में संभव है। यह प्रश्न देखें: http://stackoverflow.com/questions/6194624/asp-net-mvc3-routing-reserved-words –

+0

हाँ। यह सुरक्षा फ़िल्टर से संबंधित है जो आंतरिक एएसपी.NET फ़ाइलों जैसे web.config और बिन फ़ोल्डर की सुरक्षा करता है। फिल हैक द्वारा लिंक्ड ब्लॉग पोस्ट के मुताबिक, आराम से यूआरएल नियमों का उपयोग करना एक कामकाज होना चाहिए। –

उत्तर

9

तो यहाँ एक सारांश है। इनमें से कुछ के लिए, नियमों को थोड़ा सा आराम दिया जा सकता है, क्योंकि उन्हें कोड में संभाला जाता है। ये "कीवर्ड" कर रहे हैं: CON, COM1, COM2, COM3, COM4, LPT1, LPT2, AUX, PRN, और NUL। ये वास्तव में इस तरह के रूप में अपने web.config फ़ाइल में होने वाले बदलाव के साथ संदर्भित किया जा सकता:

<configuration> 
    <system.web> 
    <httpRuntime relaxedUrlToFileSystemMapping="true"/> 

    <!-- ... your other settings ... --> 
    </system.web> 
</configuration> 

हालांकि, छिपा खोजशब्दों के अन्य प्रकार कोड में कामयाब नहीं कर रहे हैं, बल्कि IIS में। इनके लिए आपके पास दो विकल्प हैं। आप आईआईएस सेटिंग्स को संशोधित कर सकते हैं जैसा कि Artyom Neustroev (वह this से लिंक करता है), जो मुझे थोड़ा खतरनाक बनाता है, लेकिन मुझे उम्मीद है कि यह काम करेगा।

दूसरा विकल्प, जिसे मैंने साथ जोड़ा था, मेरे AJAX कॉल को POST विधि में बदलना था। फिर मान यूआरएल में नहीं है, और पूरी समस्या को बाधित किया गया है।

इस बिंदु पर मुझे हर किसी के लिए धन्यवाद।

संबंधित मुद्दे