使用$ http时,Azure iisnode angularJS 1.x app无限循环

时间:2016-09-06 15:18:54

标签: angularjs azure iisnode

我正在使用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来说很新。

1 个答案:

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