【问题标题】:How to change angularJS directive for IIS Default Web Site如何更改 IIS 默认网站的 angularJS 指令
【发布时间】:2014-03-07 22:40:15
【问题描述】:

我正在使用 ASP.NET MVC 和 AngularJS 创建一个 Web 应用程序。 当我调试 Web 应用程序时,URL 是这样的:

http://localhost/Home/Index#/Login

当我将它发布到我使用的 IIS 开发服务器时,我使用默认网站,所以 url 将是这样的:

http://ipaddress/MyApp/Home/Index#/Login

因此,我的指令不起作用。 它们是这样设置的:

        '/Login':
            {
                templateUrl: '/Account/Login',
                controller: 'AccountController'
            },

在 IIS 开发服务器上,该指令调用 Web 应用程序的路由:

 http://ipaddress/Account/Login

应该是

http://ipaddress/MyApp/Account/Login

有没有办法改变指令在这两种情况下都起作用?

我尝试在 templateUrl 前面使用“/”字符,但它似乎不起作用(它获取 localhost/Home/Account/Login 而不是 localhost/Account/Login)

【问题讨论】:

    标签: javascript asp.net angularjs iis angularjs-directive


    【解决方案1】:

    刚刚遇到此问题,正在寻找与在站点下方的 IIS 应用程序中托管 Angular 应用程序相关的类似问题的答案。我可以通过在/ 之前添加一个. 来解决 TemplateUrl 问题

       '/Login':
            {
                templateUrl: './Account/Login',
                controller: 'AccountController'
            },
    

    【讨论】:

      【解决方案2】:

      我可以为您提供 2 个选项:

      1. 服务器配置

        不要使用虚拟目录在 dev 中托管您的应用 环境。而是使用不同的主机标头托管不同的站点 在 IIS 中,以便您可以从根目录中引用内容,例如: /Account/Login

      2. 配置模块

        考虑使用注入到您的 Angular 应用程序中的模块 其中包含可用于构建 URL 的配置 具体环境。然后有这个模块文件的一个版本 开发环境,一种用于本地,一种可能用于生产。 Javascript的美妙之处在于你可以包含不同的 javascript 文件在不同的环境中,所以模块可以 来自不同的文件。

        查看此答案以获取有关此选项的更多信息:https://stackoverflow.com/a/16340438/431522

      【讨论】:

        【解决方案3】:

        尝试在母版页标题部分设置基本网址,如

        <base href="/MyApp">

        要区分 dev 和 release 使用条件编译。看这里C# and ASP.NET MVC: Using #if directive in a view

        【讨论】:

        • 这种条件编译是否也适用于 javascript?
        猜你喜欢
        • 2010-10-22
        • 1970-01-01
        • 2013-07-30
        • 1970-01-01
        • 2017-05-23
        • 1970-01-01
        • 2021-01-27
        • 1970-01-01
        • 2019-10-16
        相关资源
        最近更新 更多