Страница входа MVC 3 не может получить файлы темы - PullRequest
2 голосов
/ 16 января 2012

В моем проекте MVC 3 у меня есть шаблон с jquery + css файлами. На авторизованных страницах нет проблем, я могу использовать все эти файлы и шаблон. Но на странице входа в систему существует проблема со связыванием файлов.

Структура файла выглядит следующим образом:

  • Корень проекта MVC
    • активы
    • 1010 * JS *
    • 1012 * CSS *

и в _Layout.cshtml, ссылка выглядит так:

<head>
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("../../assets/css/main.css")" rel="Stylesheet" type="text/css" />
    <link href='http://fonts.googleapis.com/css?family=Cuprum' rel='stylesheet' type='text/css' />
    <link href="@Url.Content("~/Content/themes/base/jquery.ui.all.css")" rel="Stylesheet" type="text/css" />

    <script src="@Url.Content("~/Scripts/jquery-1.7.min.js")" type="text/javascript"></script>

    <script type="text/javascript" src="@Url.Content("../../assets/scripts/spinner/jquery.mousewheel.js")"></script>
    <script src="@Url.Content("../../assets/scripts/spinner/ui.spinner.js")" type="text/javascript"></script>


    <script type="text/javascript" src="@Url.Content("../../assets/scripts/fileManager/elfinder.min.js")"></script>

Но в firebug я получил такую ​​ошибку:

Синтаксическая ошибка: localhost / Account / LogOn? ReturnUrl = / Scripts / jquery-1.7.min.js "

Приложение ищет другой путь. Как я могу это сделать?

Спасибо


В моем примере кода вы можете видеть, что я использовал его:

<script src="@Url.Content("~/Scripts/jquery-1.7.min.js")" type="text/javascript"></script>

но без надежды. В Firebug я вижу, что страница пытается загрузить jquery.js из "/Account/LogOn?ReturnUrl=/Script/jquery.js".

Ответы [ 3 ]

4 голосов
/ 16 января 2012

Вы можете попробовать добавить маршрут, чтобы игнорировать файлы javascript / css, поэтому в RegisterRoutes в вашем Global.asax вы можете добавить следующее:

routes.IgnoreRoute("{*js}", new { js = @".*\.js(/.*)?"});
routes.IgnoreRoute("{*css}", new { css = @".*\.css(/.*)?"});

Однако, если вы используете встроенныйв аутентификации и иметь узел авторизации, который выглядит примерно так:

<system.web>
    <authorization>
        <deny users="*"/>
    </authorization>
<system.web>

Тогда .NET автоматически отклонит запросы для любого файла, сопоставленного .NET для неаутентифицированных пользователей.Поэтому вам необходимо разрешить доступ к папке сценариев с помощью узла местоположения:

<location path="scripts">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

Поскольку вы используете MVC, может быть проще использовать AuthorizeAttribute надействие контроллера вместо использования узла авторизации в web.config.

1 голос
/ 15 марта 2012

Необходимо настроить безопасность вашей веб-папки, добавить

IUSR

,

IIS_IUSRS

и назначить им разрешение на чтение и выполнение.

1 голос
/ 16 января 2012

Замените ../.. в ваших hrefs на ~

Все ваши URL внутри @Url.Content("...") должны начинаться с тильды.

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