Доступ к статическим файлам в приложении на веб-сайте с использованием 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();
Без этого файл не будет загружен, поэтому он не сработал в первый раз.
Надеюсь, это поможет кому-то.