2015-10-12 3 views
0

Я использую IISNode для сервера Node.js файлов через IIS в Windows Azure. Но когда я пытаюсь получить доступ к пути к серверу, используя http://127.0.0.1/mysite/node/ его бросали следующую ошибкуNode.js на Windows Azure IIS с использованием IISNode: как установить файл запуска?

iisnode encountered an error when processing the request. 

HRESULT: 0x2 
HTTP status: 500 
HTTP reason: Internal Server Error 

И в лог-файл генерируется в папке iisnode она показывает следующее сообщение об ошибке:

Application has thrown an uncaught exception and is terminated: 
Error: Cannot find module 'D:\Project\Files\mysite\node"' 
    at Function.Module._resolveFilename (module.js:336:15) 
    at Function.Module._load (module.js:286:25) 
    at Module.require (module.js:365:17) 
    at require (module.js:384:17) 
    at Object.<anonymous> (C:\Program Files\iisnode\interceptor.js:210:1) 
    at Module._compile (module.js:434:26) 
    at Object.Module._extensions..js (module.js:452:10) 
    at Module.load (module.js:355:32) 
    at Function.Module._load (module.js:310:12) 
    at Function.Module.runMain (module.js:475:10) 

Но когда я пытаюсь это path http://127.0.0.1/mysite/node/app.js он выполняет файл app.js. Однако я не хочу раскрывать имя файла app.js в URL-адресе. Могу ли я установить этот файл как файл по умолчанию или файл запуска, когда я использую этот путь http://127.0.0.1/mysite/node/?


UPDATE

В дополнение к моему ответу ниже:

<rule name="DynamicContent"> 
     <conditions> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/> 
     </conditions> 
     <action type="Rewrite" url="node/main.js"/> 
    </rule> 

Этот блок кода в конфигурации не позволяет звонить на любые .net файлы вместо этого перенаправляет к узлу для выполнения. Как я могу перенаправить на узел только тогда, когда URL-адрес содержит /node/ в конце, например http://127.0.0.1/mysite/node/?

ответ

1

Я думаю, this Решение работает.

Оценка сейчас ...


UPDATE

<rule name="DynamicContent"> 
     <conditions> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/> 
     </conditions> 
     <action type="Rewrite" url="node/main.js"/> 
    </rule> 

Этот блок кода конфигурации не позволяет звонить на любые .net файлы и перенаправляет к узлу для выполнения.

Как я могу перенаправить на узел только в том случае, если URL-адрес содержит /node/ в конце, например http://127.0.0.1/mysite/node/?

0

Мы можем использовать элемент location в файле web.config как решение о том, что все файлы в определенном каталоге должны рассматриваться как приложения node.js.

Вот мой сайтов каталог фигура в IIS:

enter image description here

А вот содержание web.config: <configuration> <location path="node"> <system.webServer> <handlers> <add name="iisnode" path="*.js" verb="*" modules="iisnode" /> </handlers>
</system.webServer> </location> </configuration>

И URL, как http://localhost /mysite/node будет обрабатываться iisnode как сконфигурировано в web.config.

И другие не будут выполняться iisnode, например, в этом тесте http://localhost /mysite/php/index.php все еще запускает скрипт PHP.

Для получения дополнительной информации см. В Hosting node.js applications in IIS on Windows