ASP.NET MVC 2, Windows XP и IIS 5.1 - PullRequest
       51

ASP.NET MVC 2, Windows XP и IIS 5.1

3 голосов
/ 07 октября 2010

Я испытываю головную боль при попытке разместить MVC 2 на IIS XP! (Это относится к VS 2008, но, вероятно, относится и к VS 2010).

После долгих попыток я в итоге нашел способ отобразить свой сайт MVC 2 из IIS 5.1, но проблема в том, что нет стилей! Есть идеи, как мне это исправить?

Возможно, проблема в пути. Следуя предложениям из приведенной выше ссылки, если я изменю относительный путь моей ссылки CSS с <link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> на <link href="%3C%=Url.Content%28" ~="" content="" site.css="" )="" %>="" rel="stylesheet" type="text/css" />, тогда она не будет выполнять никаких преобразований. Когда я изменяю его на <link href="<%=Url.Content(" ~="" content="" site.css="" )="" %>="" rel="stylesheet" type="text/css" />, я получаю ошибку «Новая строка в константе».

РЕДАКТИРОВАТЬ: Обычный <link href="<%= Url.Content("~/Content/Site.css")%>" rel="stylesheet" type="text/css" /> переводится в <link href="/Mvc2.VS2008/Content/Site.css" rel="stylesheet" type="text/css" /> (где Mvc2.VS2008 является корнем моего сайта), но Content/Site.css не найден при размещении таким образом.

1 Ответ

1 голос
/ 13 октября 2010

Я не совсем уверен, в чем проблема, но значение, возвращаемое Url.Content(), не было распознано сервером IIS (вы не смогли получить его из браузера). На самом деле, мне все равно не нужно это для простых ссылок.

Действия по исправлению:

  1. Полностью переустановите IIS 5.1 (удалить, перезагрузить, удалить папку C: \ Inetpub, установить).
  2. Регистрация .NET для IIS (сначала v2, затем v4): (сообщение об ошибке = «Не удалось получить доступ к метабазе IIS»)
    • В командной строке перейдите в соответствующую папку (например, cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727)
    • aspnet_regiis -i
    • IISReset
      • Если на этом этапе произойдет сбой с ошибкой «Служба не ответила своевременно на запрос на запуск или управление. (2147943453, 8007041d)», молча проклинайте разочарование и перезапустите сайт вручную через консоль IIS ( Пуск -> Программы -> Администрирование -> Информационные службы Интернета). Если вы (по праву) параноик, перезагрузите компьютер.
  3. Добавить доступ для чтения всем
    • Скачать MetaAcl
    • Открыть командную строку
    • Metaacl.vbs "IIS://localhost/W3SVC"
      • Просмотр текущего доступа (У всех есть только E)
    • Metaacl.vbs "IIS://localhost/W3SVC" Everyone R
      • ЭТО ИСПРАВЛЕНО
  4. Добавить виртуальный каталог IIS
    • Знаете, в консоли IIS для «Веб-сайта по умолчанию».
  5. Напоминания о публикации: (вы должны знать это уже)
    • Проверка подлинности Windows (<authentication mode="Windows" /> в web.config) требует включения встроенной проверки подлинности Windows в IIS Directory Security.
    • Помогает отключить анонимный доступ. (Добавьте <authorization><deny users="?"/></authorization> в web.config или снимите флажок «анонимный доступ» в IIS Directory Security)
  6. Настройка виртуальной папки IIS
    • Сопоставления конфигурации IIS (щелкните правой кнопкой мыши виртуальную папку -> Свойства -> Вкладка «Виртуальный каталог» -> Конфигурация -> Вкладка сопоставлений)
    • Добавить расширение ". *", Exec path = (скопировать из расширения ".aspx")
    • Снимите флажок «проверить, существует ли файл»
    • Нажмите ОК (само собой разумеется)
  7. Загрузите ваш сайт в ваш любимый браузер.

Теперь все должно быть просто замечательно (на моем ПК это работало). Больше нет необходимости в Url.Content(), а стилизация должна просто работать.

...