Я пытаюсь запустить простое приложение node.js в облаке Azure.
Я в основном следовал инструкциям, написанным на следующих веб-сайтах.
-Создание веб-приложения- https://code.visualstudio.com/tutorials/app-service-extension/create-app
-Развертывание веб-приложения- https://code.visualstudio.com/tutorials/app-service-extension/deploy-app
Чтобы запустить его в Azure (IIS), я добавил web.config и server.js в корневую папку, как показано ниже. добавил 2 файла
Содержимое файлов следующее. [web.config]
<configuration>
<system.webServer>
<handlers>
<!-- Indicates that the server.js file is a node.js site to be handled by the iisnode module -->
<add name = "iisnode" path = "server.js" verb = "*" modules = "iisnode"/>
</handlers>
<rewrite>
<rules>
<!-- All URLs are mapped to the node.js site entry point -->
<rule name = "DynamicContent">
<match url = "/*" />
<action type = "Rewrite" url = "server.js"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
[server.js] Ниже показана только часть кодов.
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('./app');
var debug = require('debug')('myexpressapp:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
После развертывания в Azure (IIS) веб-приложение успешно запустилось. Однако я хотел бы использовать файл bin / www вместо server.js. Собственно, я создал файл server.js в корневой папке, скопировав файл bin / www. Чтобы напрямую использовать bin / www, я изменил файл web.config следующим образом, но это привело к ошибке. Браузер показывает ошибку: «Ресурс, который вы ищете, был удален, изменено его имя или временно недоступен». Кажется, он не может найти файл www. Я ошибаюсь в том, как я пишу путь?
<configuration>
<system.webServer>
<handlers>
<!-- Indicates that the server.js file is a node.js site to be handled by the iisnode module -->
<add name = "iisnode" path = "bin/www" verb = "*" modules = "iisnode"/>
</handlers>
<rewrite>
<rules>
<!-- All URLs are mapped to the node.js site entry point -->
<rule name = "DynamicContent">
<match url = "/*" />
<action type = "Rewrite" url = "bin/www"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Буду признателен за любую помощь.
Большое спасибо за ответ. Прошу прощения за недоразумение. На самом деле это папка wwwroot, которую я имел в виду как «корень». web.config находится в этой папке wwwroot. В файле web.config я пытался сослаться на файл wwwroot / bin / www, но в принципе это невозможно сделать? Если я хочу записать путь к файлу в web.config, указанные файлы должны находиться в той же папке, что и web.config?
Windows использует «\» вместо «/», поэтому я предполагаю, что вы должны использовать вместо этого «bin \ www».
Большое спасибо за ответ. Я пробовал это, но это не сработало.





Я смог решить проблему. Я изменил имя папки с «bin» на другое имя, и это сработало. Я пытаюсь понять, почему имя «bin» не работает ... Это потому, что «bin» как бы зарезервирован сервером и не может быть использован? Я был бы признателен, если бы кто-нибудь мог сообщить мне любые возможные причины ...
"Корневая папка"? Который из? И обычно вы не можете, так как правила выполняются из папки вашего сайта, а «bin / www» должен находиться в папке вашего сайта. Если вы хотите изменить уровень сервера, вы должны использовать «applicationHost.xdt».