在IIS中运行时,如何使Angular JS 1路由在ASP.Net MVC Core中工作?

时间:2017-02-24 19:31:34

标签: angularjs iis asp.net-core-mvc

我有一个ASP.Net Core MVC / Angular JS应用程序我正在开发。

在我开发和运行VS 2015和IIS Express时,一切正常。

但是,当我将文件发布到我的本地IIS并尝试在那里运行时,它无法正常工作。主页工作正常,这实际上是最终的Angular路线:

$routeProvider.otherwise({
        templateUrl: "/app/views/home.html"
    });

我终于找到了发生的事情,但我不知道为什么? 在我的ASP.Net Core MVC _Layout.cshtml的NavBar中,我的<a>元素看起来像这样:

<a href="#!/employee_list">Employees</a>
<a href="#!/non_employees">Non Employees</a>

通过VS 2015和IIS Express在Dev中运行良好。 网址如下所示:

http://localhost:2352/#!/employee_list

并且所有内容都应该呈现。

但是在发布并运行完整的IIS(在本地)之后,相同的<a>链接会提供如下的URL:

http://lerd/#/!/employee_list

注意&#39; /&#39;在&#39;#&#39;之间和&#39;!&#39;。

所以代替&#39; /#!/ employee_list&#39;我得到&#39; /#/!/ employee_list。

世界上究竟是什么造成了这种情况?还有其他人经历过这个吗?

我刚注意到,如果您在浏览器中手动输入正确的URL并点击输入,那么就会在那里添加额外的斜杠。所以它并不是真正的应用程序。它是浏览器,也许是IIS。

1 个答案:

答案 0 :(得分:-1)

看来你需要'#'和'#!'在开发中。

所以我在设置NavBar的布局文件中执行了此操作:

<environment names="Development">
    <li><a href="#!/employee_list">Employees</a></li>
    <li><a href="#!/non_employees">Non Employees</a></li>
</environment>
<environment names="Staging,Production">
    <li><a href="#/employee_list">Employees</a></li>
    <li><a href="#/non_employees">Non Employees</a></li>
</environment>