Azure Web应用在查看时出现HTTP错误500,如何修复此问题?

9gm1akwq  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(116)

尝试上传我的移动的网络应用程序到azure遵循https://learn.microsoft.com/en-us/azure/app-service/quickstart-nodejs?tabs=windows&pivots=development-environment-vscode
最后我只是得到错误无法处理请求HTTP错误500
Web应用程序在本地工作,所以我不知道是什么问题,一个朋友告诉我,这可能是因为视图文件夹中的所有网页都是.ejs文件,而它们应该是HTML。

qc6wkl3g

qc6wkl3g1#

我已经按照您提供的相同文件,并能够访问应用程序没有任何问题。

  • 使用以下命令创建Node.js应用程序。
npx express-generator myExpApp19Dec --view ejs

  • 导航到应用程序根目录(myExpApp19Dec)并运行npm install

  • node_modules文件夹将在目录的根目录下创建。
  • 运行npm start以在本地启动和运行应用程序。

  • 从VSCode打开应用程序。
    将Web应用部署到Azure应用服务的步骤
  • 登录Azure =〉点击Azure Icon =〉选择您的Subscription =〉App Services

web app name - ExpressApp19Dec
runtime stack - Node 18 LTS
OS - Windows
Location - East US

  • 部署后,当我尝试访问应用程序时,立即收到以下错误。

  • 按照文档中的建议,在应用程序设置中添加了SCM_DO_BUILD_DURING_DEPLOYMENT

  • 导航到VSCode =〉您的App =〉Application Settings =〉Add New Setting中已部署的应用程序文件夹。

  • 我们甚至可以从Azure Portal =〉App Service =〉Configuration部分添加此Application Setting。从Azure门户添加Application Setting时,可以排除重新部署选项。

  • 重新部署应用程序以获取最新更改。

  • 确保在KUDU控制台中已部署应用程序的根目录下创建web.config文件。KUDU控制台路径-***https://YourAppServiceName.scm.azurewebsites.net/DebugConsole***

我自动生成的web.config文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>   
    <webSocket enabled="false" />
    <handlers>     
      <add name="iisnode" path="bin/www" verb="*" modules="iisnode"/>
    </handlers>
    <rewrite>
      <rules>      
        <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
          <match url="^bin/www\/debug[\/]?" />
        </rule>
       
        <rule name="StaticContent">
          <action type="Rewrite" url="public{PATH_INFO}"/>
        </rule>       
        <rule name="DynamicContent">
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
          </conditions>
          <action type="Rewrite" url="bin/www"/>
        </rule>
      </rules>
    </rewrite>   
   
    <security>
      <requestFiltering>
        <hiddenSegments>
          <remove segment="bin"/>
        </hiddenSegments>
      </requestFiltering>
    </security>  
    <httpErrors existingResponse="PassThrough" />     
  </system.webServer>
</configuration>
  • 现在我可以访问应用程序。

views文件夹中的所有网页都是.ejs文件,而它们应该是HTML。

  • VSCode文件中,
app.set('view engine', 'ejs');

此代码有助于检测ejs文件。问题与ejs文件无关。
EJS是 NodeJS 应用程序使用的Embedded JavaScript模板。

相关问题