Angular和IIS WebApplication(或虚拟目录)

时间:2016-07-25 10:17:42

标签: angular iis web-applications angular2-template

我们的网站服务器上有一个IIS网站和一个IIS Web应用程序。 Web应用程序的根目录是: http://website/webapplication/ 。 部署后,我在浏览器中收到以下错误:

  

http://website/app/app.component.html 404(未找到)

     

app / app.component.html 404(未找到)

我的组件:

@Component({
    selector: "app",
    templateUrl: "./app/app.component.html"
})

文件app.component.html确实不存在于 /app/app.component.html 下,但确实存在于: /webapplication/app/app.component.html

所以,我的结论是Angular仅在网站的根目录中有效。 在html标头中,我已将标记设置为:<base href="/webapplication/">,但这并没有帮助。

这似乎是一个正常的设置,我无法相信在Angular中解析的模板失败了,我必须遗漏一些东西......有没有人知道解决方案?

2 个答案:

答案 0 :(得分:0)

虽然您可以使用Url Rewrite并使其正常工作,但此问题的唯一长期解决方案是使用HashLocationStrategy。

Angular 2.0 router not working on reloading the browser

答案 1 :(得分:0)

我无法使用网络上有关解决此问题的大多数建议,我也不知道为什么。我玩了设置util,直到它正常工作。这是我用的:

  • IIS 10.0
  • Angular 6.1.0项目
  • 虚拟目录已转换为应用程序
  • 应用程序池:无托管代码

webconfig:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <directoryBrowse enabled="true" />
    <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" />
        </conditions>
       <action type="Rewrite" url="/myapp/index.html" />
      </rule>
    </rules>
    </rewrite>
  </system.webServer>
</configuration>

我的根index.html文件:

<base href="./">   <---- make sure you have the dot in there!