Azure Web应用程序上的Angular应用程序失败并显示"您要查找的资源已被删除,名称已更改或暂时不可用。"

时间:2017-02-25 07:29:46

标签: angularjs azure azure-web-sites

在本地确认一般操作后,我刚刚向Azure Web Apps发布了Angular应用程序。但是,我现在收到以下错误(HTTP错误404.0 - 未找到),特别是D:\ home \ site \ wwwroot \ bin \ www文件:

enter image description here

然而,使用Kudu工具,我可以看到文件确实在那里:

enter image description here

什么可能导致此错误?

2 个答案:

答案 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