2012-03-28 13 views
6

मैंने नोड के साथ एपीआई जैसे आरईएसटी बनाने के लिए iisnode और expressjs के साथ कुछ प्रयोग करना शुरू कर दिया।iisnode - IIS7.5: 405 PUT अनुरोध करते समय विधि की अनुमति नहीं है

तो server.js पर मैं

app.put("/test", function(req, res){ 
    ... 
}); 

हालांकि कुछ ऐसा बनाया है, जब मैं PUT अनुरोध पर अमल मैं आईआईएस 7.5 स्थापना से एक 405 Method not allowed मिलता है।

इसे हल करने के तरीके पर कोई विचार?

Btw, मैं पहले से ही googled और कोई सफलता के साथ अलग अलग हैंडलर मैपिंग में यहाँ और वहाँ PUT क्रियाओं को जोड़ने के लिए ...

+0

यह IIS में 99% यकीन है कि कुछ तो मैं यकीन है कि तुम वहाँ से कुछ छूट गया हूँ। हालांकि, मैं वास्तव में आपके आईआईएस कॉन्फ़िगरेशन में नहीं देख सकता :-) –

+0

यही कारण है कि मैं समझ नहीं पा रहा हूं कि क्यों कोई भी मासोचिस्ट आईआईएस का उपयोग नोड होस्ट करने के लिए करना चाहता है ... – UpTheCreek

+0

:) मुझे लगता है कि यह सिर्फ इसलिए है तैनाती के माहौल में आप हैं। आपके पास आईआईएस वेबसर्वर चलाने के लिए प्रतिबंध हो सकते हैं ... मेरे मामले में 'कारण मैं इसे ऐपहार्बर पर तैनात करना चाहता हूं क्योंकि यह मेरे लिए उपयुक्त है (लागत के दृष्टिकोण से) प्रयोग (उदाहरण के लिए Heroku से)। आपके जवाब के लिए – Juri

उत्तर

21

अब मुझे अंत में इस समस्या का समाधान मिला है, अर्थात् WebDavModule मेरे PUT अनुरोधों को अवरुद्ध कर रहा था।

  1. अपने आईआईएस प्रबंधक
  2. गोटो आपके आवेदन विन्यास और खुले "मॉड्यूल"
  3. खोजें WebDavModule खोलें और यह (दाईं ओर मेनू)
निकालें:

समस्या को हल करने

फिर यह मेरे लिए काम किया।

वैकल्पिक रूप से, आपके आवेदन के web.config में जोड़ने

<system.webServer> 
    ... 
    <modules> 
     <remove name="WebDAVModule"/> 
    </modules> 
</system.webServer> 
2

एक कारण यह हो सकता है कि आपके web.config विशेष नक्शा नहीं है की कोशिश की अनुरोध है कि आप iisnode हैंडलर को बना रहे हैं। https://github.com/tjanczuk/iisnode/blob/master/src/samples/helloworld/web.config#L7

: उस मामले में अनुरोध स्थिर अनुरोध हैंडलर जो PUT तरीकों का समर्थन नहीं करता है और एक 405

के साथ प्रतिक्रिया इसे ठीक करने के आप अपने web.config में इस तरह की एक iisnode हैंडलर पंजीकरण की आवश्यकता द्वारा उठाया जाता है

इसके अलावा, यदि आप यूआरएल का उपयोग करने की योजना बना रहे हैं जो आपके node.js फ़ाइल (जैसे उपरोक्त मामला प्रतीत होता है) के नाम से समाप्त नहीं होता है, तो आपको आईआईएस को बताए जाने के लिए यूआरएल रीराइट मॉड्यूल का उपयोग करना होगा उनके यूआरएल आपके node.js एंट्री पॉइंट के यूआरएल को इंगित करने के लिए फिर से लिखे गए हैं। और पढ़ें: http://tomasz.janczuk.org/2011/08/using-url-rewriting-with-nodejs.html

+0

Thx, हालांकि मुझे पहले से ही आपकी ब्लॉग पोस्ट मिली है और बिना किसी सफलता के मेरे ऐप को कॉन्फ़िगर किया गया है। हालांकि, मुझे समाधान मिला है। (निचे देखो) – Juri

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