Azure子文件夹中的Node.js应用程序未运行

时间:2016-08-17 08:10:16

标签: node.js azure

我们和我的一位同事一起尝试了一切,但我们无法让它发挥作用:( 我们在Azure中有一个Web应用程序 - 一个MVC。在其中我们想要添加一个博客作为子文件夹,但现在我们使用一个非常简单的快速应用程序进行测试。

基本上,我们有主要的MVC应用程序。 我已经尝试将我的小型测试node.js应用程序移动到site \ test和site \ wwwroot \ test。 有一个指向站点/测试的虚拟应用程序/测试。 (来自Azure门户应用程序设置)。

在测试文件夹中,web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="iisnode" path="index.js" verb="*" modules="iisnode" />
        </handlers>
        <rewrite>
            <rules>
                <rule name="DynamicContent">
                    <action type="Rewrite" url="index.js" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

index.js

var express = require('express');
var app = express();

console.log(1);

app.get('/', function (req, res) {
  res.send('Hello World!');
});

app.listen(process.env.PORT || 3000, function () {
  console.log('Test is live');
});

的package.json

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.14.0"
  }
}

尝试打开http://MySite.azurewebsites.net/test/然后从FTP打开主站点并转到LogFiles / DetailedErrors后,有两个错误:

HTTP Error 500.1000 - Internal Server Error
Detailed Error Information:
Module     iisnode
Notification       ExecuteRequestHandler
Handler    iisnode
Error Code     0x8007000d
Requested URL      http://MySite:80/test/index.js
Physical Path      D:\home\site\wwwroot\test\index.js
Logon Method       Anonymous
Logon User     Anonymous

HTTP Error 403.14 - Forbidden
Detailed Error Information:
Module     DirectoryListingModule
Notification       ExecuteRequestHandler
Handler    StaticFile
Error Code     0x00000000
Requested URL      http://MySite:80/test/
Physical Path      D:\home\site\wwwroot\test\
Logon Method       Anonymous
Logon User     Anonymous

最后,这是主要的应用程序web.config。我怀疑它可能是问题的关键所在:

<?xml version="1.0" encoding="utf-8"?>
<configuration>  
  <configSections>    
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <sectionGroup name="jsEngineSwitcher">
      <section name="core" type="JavaScriptEngineSwitcher.Core.Configuration.CoreConfiguration, JavaScriptEngineSwitcher.Core" />
      <section name="msie" type="JavaScriptEngineSwitcher.Msie.Configuration.MsieConfiguration, JavaScriptEngineSwitcher.Msie" />
      <section name="v8" type="JavaScriptEngineSwitcher.V8.Configuration.V8Configuration, JavaScriptEngineSwitcher.V8" />
    </sectionGroup>
  </configSections>  
  <connectionStrings>
    some conn strings
  </connectionStrings>    
  <location path="." inheritInChildApplications="false">
    <appSettings>
      <add key="webpages:Version" value="3.0.0.0" />
      <add key="webpages:Enabled" value="false" />
      <add key="ClientValidationEnabled" value="true" />
      <add key="UnobtrusiveJavaScriptEnabled" value="true" />      
      <add key="webpages:Enabled" value="true" />
      <add key="webpages:Version" value="3.0.0.0" />
    </appSettings>
  </location>
  <location path="." inheritInChildApplications="false">
    <system.web>      
      <authentication mode="None" />
      <compilation debug="true" targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
      <httpHandlers>
        <add path="*.png" verb="*" type="System.Web.StaticFileHandler" validate="true" />
        <add path="*.js" verb="*" type="System.Web.StaticFileHandler" validate="true" />        
      </httpHandlers>      
    </system.web>
  </location>
  <location path="." inheritInChildApplications="false">
    <system.webServer>    
      <validation validateIntegratedModeConfiguration="false" />
      <modules runAllManagedModulesForAllRequests="true">
        <remove name="FormsAuthentication" />
      </modules>
      <staticContent>
        <remove fileExtension=".eot" />
        <remove fileExtension=".ttf" />
        <remove fileExtension=".otf" />
        <remove fileExtension=".woff" />
        <remove fileExtension=".woff2" />
        <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
        <mimeMap fileExtension=".ttf" mimeType="font/ttf" />
        <mimeMap fileExtension=".otf" mimeType="font/otf" />
        <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
        <mimeMap fileExtension=".woff2" mimeType="application/font-woff" />
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="14.00:00:00" />
      </staticContent>
      <security>
        <requestFiltering>
          <hiddenSegments>
            <add segment="ClearScript.V8" />
          </hiddenSegments>
        </requestFiltering>
      </security>
      <handlers>
        <remove name="Babel" />
        <add name="Babel" verb="GET" path="*.jsx" type="React.Web.BabelHandlerFactory, React.Web" preCondition="integratedMode" />
      </handlers>     
      <directoryBrowse enabled="false" />
    </system.webServer>
  </location>  
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <jsEngineSwitcher xmlns="http://tempuri.org/JavaScriptEngineSwitcher.Configuration.xsd">
    <core>
      <engines>
        <add name="MsieJsEngine" type="JavaScriptEngineSwitcher.Msie.MsieJsEngine, JavaScriptEngineSwitcher.Msie" />
        <add name="V8JsEngine" type="JavaScriptEngineSwitcher.V8.V8JsEngine, JavaScriptEngineSwitcher.V8" />
      </engines>
    </core>
  </jsEngineSwitcher>
</configuration>

我们已经尝试了我们在网上找到的所有内容,但没有任何工作:(真的很感激一些帮助!

1 个答案:

答案 0 :(得分:0)

以下是IIS, Node.js, and Web Application with IISNode not configured right with Virtual Directory的答案,与您的情况相同。我在本地测试了这个答案,它运行良好。

我构建了一个空的MVC应用程序,并将一个简单的expressjs应用程序放入其中,web.confighttp://tstrimple.com/express-4-azure-websites/类似。

我没有在MVC的web.config文件中配置任何位置标记。

如有任何疑问,请随时告诉我。