8

ノードを使用してAPIのようなRESTを作成するために、 iisnodeとexpressjsを使って実験を始めました。

したがって、server.jsで次のようなものを作成しました

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

ただし、PUT要求を実行すると、IIS7.5の405 Method not allowedインストールからが取得されます。

これを解決する方法について何かアイデアはありますか?

ところで、私はすでにグーグルで検索し、PUT動詞をさまざまなハンドラーマッピングのあちこちに追加しようとしましたが、成功しませんでした...

4

2 に答える 2

24

私はついにこの問題の解決策を見つけました。つまり、WebDavModuleがPUTリクエストをブロックしていました。

問題を解決するには:

  1. IISマネージャーを開きます
  2. アプリケーション構成に移動し、「モジュール」を開きます
  3. WebDavModuleを検索して削除します(右側のメニュー)

それは私のために働いた。

または、アプリケーションのweb.configに追加します

<system.webServer>
    ...
    <modules>
       <remove name="WebDAVModule"/>
    </modules>
</system.webServer>
于 2012-03-29T07:07:24.190 に答える
3

1つの理由は、web.configが作成している特定の要求をiisnodeハンドラーにマップしないことである可能性があります。その場合、要求はPUTメソッドをサポートしない静的要求ハンドラーによってピックアップされ、405で応答します。

これを修正するには、web.configに次のようなiisnodeハンドラー登録が必要です:https ://github.com/tjanczuk/iisnode/blob/master/src/samples/helloworld/web.config#L7

さらに、node.jsファイルの名前で終わらないURLを使用する場合(上記の場合のように)、URL書き換えモジュールを使用してIISにどのリクエストにそれらを含める必要があるかを正確に伝える必要がありますnode.jsエントリポイントのURLを指すようにURLが書き直されました。詳細については、http://tomasz.janczuk.org/2011/08/using-url-rewriting-with-nodejs.htmlをご覧ください。

于 2012-03-28T17:01:43.300 に答える