Как мне заставить мое приложение asp.net MVC распознавать таблицу стилей на живом сервере? - PullRequest
1 голос
/ 01 июня 2010

Я собирал пример приложения asp.net с использованием VWD2008 и виртуального сервера разработки, который поставляется вместе с ним. Я дошел до того, что хочу убедиться, что приложение работает правильно на живом сервере, поэтому я решил опубликовать его. Кажется, все работает отлично, примите за таблицы стилей. Ни один из стилей не применяется к странице. Я дважды проверил ссылку на таблицу стилей и дважды проверил расположение сервера. Все выглядело нормально и было идентично версии на моем виртуальном сервере.

Ссылка: <link rel="Stylesheet" type="text/css" href="/Content/Site.css" />

Когда я пытаюсь перейти к таблице стилей (http://mydomain.com/Content/Site.css), я получаю эту ошибку:

Ошибка сервера в приложении '/'.

Ресурс не найден.

Описание: HTTP 404. Требуемый ресурс (или одна из его зависимостей) мог быть удален, изменилось его имя или временно недоступен. Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно.

Запрошенный URL: /Content/Site.css

Ребята, вы понимаете, что может быть причиной этого?


Редактировать

Я пошел вперед и создал test.html и бросил его в корень живого сервера.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>test</title>
        <link rel="Stylesheet" type="text/css" href="/Content/Site.css" />
    </head>
    <body>
        <h1>Hi</h1>
    </body>
</html>

когда я просматриваю это местоположение (mydomain.com/test.html), я получаю еще одну ошибку 404. В частности, я посмотрел на источник страницы с ошибкой и нашел это:

[HttpException]: контроллер для пути '/test.html' не найден или не реализует IController. at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Кажется, что asp.net все еще использует маршрутизацию, когда я запрашиваю обычный файл HTML или CSS. есть ли способ обойти это. Есть ли настройки сервера или что-то, что я могу изменить в конфигурации или маршрутизации?

Ответы [ 2 ]

2 голосов
/ 01 июня 2010

Всегда используйте html помощники при работе с URL:

<link rel="Stylesheet" 
      type="text/css" 
      href="<%= Url.Content("~/Content/Site.css") %>" />

или еще лучше с MVCContrib :

<%= Html.Stylesheet("~/Content/Site.css") %>
0 голосов
/ 01 июня 2010

Попробуйте " .. / .. / Content / Site.css ", для работы может потребоваться относительный путь от текущей главной страницы (вероятно, / Views / Shared).

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