我正在使用index.html中的iisnode / Azure提供角度1.x应用。路由工作正常,但每当我加载任何进行$ http资源调用的视图时,它似乎进入无限循环。 api 托管在其他实例上。我已经测试了在邮递员中点击实例apiBase /它返回了预期的响应。我的 web.config for iisnode如下:
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="AngularJS Conditions" stopProcessing="true">
<match url="(css/.*|images/.*|scripts/.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="None" />
</rule>
<rule name="AngularJS Wildcard" enabled="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="index.html" />
</rule>
</rules>
</rewrite>
任何帮助都非常实用。对iisnode / Azure来说很新。
答案 0 :(得分:0)
实际上,如果您在Azure Web App上运行纯angularJs SPA,则无需配置web.config
来强制iisnode执行您的应用程序。由于angularJs应用程序是完全纯粹的javascript应用程序,它通过客户端浏览器上的解释器运行。您在IIS中配置的重写模式可能是犯罪分子,可能会破坏anguarJs应用程序中的路由事件。
您可以尝试删除web.config
文件并重新启动Azure Web Apps。
此外,由于我无法在您身边重现您的问题,如果您方便,请在GitHub或其他任何地方提供问题项目回购,以便我们检测问题。
如果您正在使用html5mode
angularjs路由提供程序,这可能是一个常见问题。
请尝试使用以下内容修改您的web.config
:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="AngularJS Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>