Доступ к статическим файлам в приложении на веб-сайте с использованием IIS

У меня есть несколько приложений ASP.NET, развернутых на веб-сайте по умолчанию в IIS (8). Их виртуальные каталоги настроены следующим образом: App1, App2, поэтому я называю их localhost/App1/..., localhost/App2/..., они работают хорошо.

Я хочу загрузить файл JavaScript, как показано ниже, в файле мастер-страницы в теге заголовка в одном из моих приложений:

<script src="/Script/myfile.js" type="text/javascript"></script>

Когда я открываю страницу, я получаю ошибки в консоли, так как мои файлы не могут быть найдены, потому что она ищет файл в localhost/Script/ вместо localhost/App1/Script/

Есть ли способ установить корневой каталог в качестве корневого каталога приложения, содержащего виртуальный путь к приложению?

Я не хочу хардкор /App1 строка в начало пути к файлам js, потому что приложение развертывается чаще, с разными именами приложений на разных сайтах, и у меня тоже много файлов js.

С приведенным ниже примером у меня тоже не было успеха:

<script type="text/javascript" src="<%# Page.ResolveClientUrl("~/Script/myfile.js") %>"></script>

Но если я изменил <%# %> tag to <%= %> Затем он работал на одной странице, но другие выдали ошибку: "Только элементы содержимого разрешены непосредственно на странице содержимого, которая содержит элементы управления содержимым". Для этой ошибки я нашел решение изменить <%= %> в <%# %>, который не работал для меня, из-за этого мои js-файлы снова не работали ни на одной странице.

Есть идеи?

1 ответ

Я обнаружил, что решение с использованием приведенного ниже кода работает (это в заголовке моей главной страницы):

<script type="text/javascript" src="<%# Page.ResolveClientUrl("~/Script/myfile.js") %>"></script>

Но мне нужно поместить приведенный ниже код в метод загрузки страницы главной страницы:

if(!IsPostBack)
        this.Page.DataBind();

Без этого файл не будет загружен, поэтому он не сработал в первый раз.

Надеюсь, это поможет кому-то.

Другие вопросы по тегам