URL относительного изображения в файле Javascript - ASP.net MVC и IIS 7 - PullRequest
4 голосов
/ 05 декабря 2008

Я занимаюсь разработкой приложения Asp.net mvc, все отлично работает на сервере разработки ASP.net, но когда я пытаюсь разместить его на IIS 7. У меня проблема с разрешением URL. Я использовал относительные пути в Javascript, чтобы дать изображение. Файл сценария находится в папке ~ / Scripts /, а файлы изображений находятся в папке ~ / Content / images /. Теперь в файле JavaScript я пытаюсь использовать дать, давая относительный путь, как http://localhost/WebApp1/controller1/action1/ он пытается найти его в http://localhost/controller1/action1/ и не может найти файл.

Ответы [ 4 ]

4 голосов
/ 05 декабря 2008

Если, как я понимаю, это правильно, вы теперь запускаете WebApp из корневого каталога IIS7 домена вместо WebApp1 из среды разработки?

Итак, если мое предположение верно, то ~ / теперь должно разрешиться до http://localhost/ вместо http://localhost/WebApp1/

Если все по-прежнему верно, то ваша структура папок переместилась на один уровень вверх с вашей папкой ~ / scripts по абсолютному пути:

http://localhost/Scripts/

и ваша папка изображений как:

http://localhost/Content/Images/

Чтобы получить доступ к вашим изображениям из ваших сценариев, вы можете использовать несколько методов. Самое простое - использовать относительный путь из вашего каталога скриптов: "../ Content / Images / MyImage.jpg"

Или вы можете использовать document.location.host для создания полного имени пути в javascript: document.location.host + "/Content/Images/MyImage.jpg"

Другой метод заключается в том, чтобы ASP.NET динамически создавал эту часть сценария так, чтобы вводилось полное имя пути. Это можно сделать с помощью ScriptManager.RegisterStartupScript или ScriptManager.RegisterScriptBlock

Есть действительно много способов снять шкуру с этой кошки, это только первые 3, которые я могу придумать с макушки головы.

1 голос
/ 16 февраля 2011

У меня была такая же проблема, и я нашел элементное решение Дэвида Банистера. Проблема связана с действием индекса контроллера MVC, которое возвращает URL-адрес в виде (www.mysite.com/viewName, а не www.mysite.com/viewName/index), который веб-браузер позже потерпит неудачей при попытке ссылки на CSS или js-файлы с использованием синтаксиса относительного пути (../../).

Его решение хорошо работает для меня. Надеюсь, это кому-нибудь поможет. Удачи.

http://blog.davidbanister.com/2010/09/28/mvc-fixes-relative-path-issues-in-asp-net-mvc-2/

1 голос
/ 05 декабря 2008

Попробуйте:

Атрибут runat должен гарантировать, что каркас разрешает его. Вы также можете использовать метод ResolveUrl.

0 голосов
/ 04 января 2012

У меня была эта проблема в прошлом, попробуйте использовать тильду

~ / controller1 / действие1 /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...