2012-03-28 29 views
6

Düğümlü bir REST benzeri API oluşturmak için iisnode ve expressjs ile bazı denemeler yapmaya başladım.iisnode - IIS7.5: 405 PUT isteği gerçekleştirilirken yönteme izin verilmiyor

Yani server.js üzerinde ben PUT isteği yürütmek zaman IIS 7.5 yüklemesinden bir 405 Method not allowed olsun,

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

gibi bir şey yarattı.

Bunu nasıl çözeceğiniz konusunda bir fikrin var mı?

BTW, ben zaten googled ve

+0

eklemek O yüzden orada bir şey cevapsız eminim IIS içinde% 99 emin şey. Ancak, gerçekten IIS yapılandırmanıza bakamıyorum :-) –

+0

Bu yüzden neden sadece bir mazoşistin niçin IIS'yi kullanmak için IIS kullanacağını anlayamıyorum ... – UpTheCreek

+0

:) Bulunduğunuz yerdeki dağıtım ortamı. IIS web sunucularını çalıştırmaya yönelik kısıtlamalara sahip olabilirsiniz ... benim durumumda, çünkü AppHarbor'a daha uygun olduğu için (maliyet açısından) deneyler (örneğin Heroku'dan). Cevabınız için – Juri

cevap

21

Şimdi nihayet bu problemin çözümünü buldum: WebDavModule PUT taleplerimi engelliyordu.

  1. IIS Yöneticisi
  2. Goto Başvurunuz yapılandırma ve açık "Modülleri"
  3. Arama WebDavModule açın ve (sağda menü)
kaldırın:

sorunu çözmek için

Daha sonra benim için çalıştı.

Alternatif, uygulamanızın web.config

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

bir nedeni web.config özellikle eşleşmiyor olabilir ... hiçbir başarı ile farklı İşleyici eşlemeleri orada burada PUT fiiller eklemek çalıştı iisnode işleyicisine yapmak istiyoruz. https://github.com/tjanczuk/iisnode/blob/master/src/samples/helloworld/web.config#L7

: Bu durumda talep PUT yöntemleri desteklemek ve web.config böyle bir iisnode işleyicisi kayıt gerekir Bunu düzeltmek için bir 405.

ile yanıt vermez statik istek işleyicisi tarafından alınır

Ayrıca, eğer node.js dosyanızın adıyla bitmeyen URL'yi kullanmayı planlıyorsanız (yukarıdaki gibi görünüyor), IIS'ye hangi isteklerin olması gerektiğini tam olarak bildirmek için bir URL yeniden yazma modülünü kullanmanız gerekecektir. URL'leri, node.js giriş noktanızın URL'sini işaret edecek şekilde yeniden yazılmıştır. Daha fazla bilgi için: http://tomasz.janczuk.org/2011/08/using-url-rewriting-with-nodejs.html

+0

Thx, ancak blog gönderilerinizi zaten buldum ve uygulamamı buna göre yapılandırdım ... herhangi bir başarı olmadan. Yine de çözümü buldum. (aşağıya bakınız) – Juri

İlgili konular