Angular приложение в виртуальном каталоге IIS 8.x имеет странное поведение URL

У меня проблема с Angular JS на IIS 8.x с MVC. Моя индексная страница приложения с виртуальным каталогом выглядит так:

https://myapp.xyz/VirtualDirectory/

Эта страница загружает приложение Angular. Мои маршруты Angular настроены как:

$routeProvider
.when('/', {
    templateUrl: 'Content/Partials/Home/Index.html'
})
.when('/Error', {
    templateUrl: 'Content/Partials/Shared/Error.html'
})
.otherwise({
    redirectTo: '/Error'
});

Итак, если я получаю доступ к первой ссылке, мой URL-адрес выглядит следующим образом:

https://myapp.xyz/VirtualDirectory/#/

Это прекрасно работает и прекрасно разрешает мои частичные. Angular запрашивает частичные файлы с виртуальным каталогом, поэтому я вижу HTTP-запрос:

https://myapp.xyz/VirtualDirectory/Content/Partials/Home/Index.html

Однако, если я получаю доступ без конечной косой черты, например:

https://myapp.xyz/VirtualDirectory

Angular маршруты:

https://myapp.xyz/VirtualDirectory#/

Как только это произойдет, ни один из моих маршрутов не работает (они не уважают виртуальный каталог). Они маршрутизируются как:

https://myapp.xyz/Content/Partials/Home/Index.html

Это разбивает все мои маршруты и шаблоны, определенные в моих директивах. Любые предложения по устранению этой проблемы?

Ответ 1

попробуйте добавить это в свой заголовок.

<html>
<head>
    <base href="/VirtualDirectory/">
</head>
<body>
    ...
</body>

Ответ 2

Я обнаружил, что если вы используете синтаксис./для пути, вам не нужно включать Razor.

Не удалось выполнить код:

$routeProvider.when("/productList", {
            templateUrl: "/app/products/productListView.html", controller: "ProductListController as vm"
        });

Код, который работает: (обратите внимание на. before/app)

$routeProvider.when("/productList", {
            templateUrl: "./app/products/productListView.html", controller: "ProductListController as vm"
        });