在本地确认一般操作后,我刚刚向Azure Web Apps发布了Angular应用程序。但是,我现在收到以下错误(HTTP错误404.0 - 未找到),特别是D:\ home \ site \ wwwroot \ bin \ www文件:
然而,使用Kudu工具,我可以看到文件确实在那里:
什么可能导致此错误?
答案 0 :(得分:1)
默认情况下,IIS会阻止从某些文件夹(包括bin)提供内容。您可以a)将www文件夹移出bin目录,或者b)您可以将以下配置添加到web.config:
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<remove segment="bin" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
答案 1 :(得分:1)
bin \ www上的404.0错误有点误导。将一个console.log放在www文件中并观察输出后,我发现确实正在调用bin \ www。问题还在于提供静态内容,最初是index.html
文件。
我之前使用以下内容来提供index.html:
var serveStatic = require('serve-static');
...
app.use(serveStatic('.', { 'index': ['index.html'] }));
出于某种原因,虽然这在本地工作,但是一旦发布到Azure Web App,它就不起作用了。所以我决定使用一种适用于其他人的方法。首先,我将index.html
移至/ public,然后使用express.static:
app.use(express.static(__dirname + '/public'));
还应注意,关联的web.config文件还必须包含与静态内容相关的信息,例如:How to enable static files (and less support) when hosting a nodejs app within IIS using IISNode