2010-10-07 4 views
3

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

После долгого столкновения я в конечном итоге found a way, чтобы отобразить мой сайт 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" />, я получаю сообщение об ошибке «Новая строка в константе».

EDIT: нормальный <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

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

шаги, чтобы исправить:

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

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