Nerd Dinner возвращает 404 для всех подстраниц

Я только что получил новую машину с Windows Server 2003, и я пытался получить Nerd Dinner на нее. На сервере уже установлены.NET 3.5 SP1, ASP .NET MVC и т. Д.

Когда я загружаю Nerd Dinner через FTP в подкаталог главной веб-страницы, я получаю 404 при переходе на любую страницу сайта, кроме корневой, и на домашней странице не отображается карта.

Например, когда я перехожу на страницу about, я получаю следующую запись в журнале IIS:

2009-08-13 17:56:10 128.200.123.118 GET / nerddinner / Home / About - 80 - 128.200.123.89 Mozilla / 4.0 + (совместимо; + MSIE + 8.0 <snip >) 404 0 3

Я очень озадачен, потому что это недавно скачанная и скомпилированная копия Nerd Dinner от Codeplex.

В случае, если это поможет, вот запись в журнале о неудачных попытках получить JavaScript для карты (обратите внимание на полное отсутствие "/ nerddinner"):

2009-08-13 18:03:05 128.200.123.118 GET /Scripts/Map.js - 80 - 128.200.123.89 Mozilla / 4.0 + (совместимо; + MSIE + 8.0 <snip >) 404 0 3

У меня есть сильное чувство, что я смогу исправить это в файле asax.cs, но я не могу заставить его работать, даже после добавления "nerddinner/" вперед.

Есть идеи, что происходит?

Изменить: я загрузил его в корень веб-папки, и 404-е продолжаются.

Редактировать 2: Спасибо за предложения. Я следовал инструкциям и теперь не получаю 404. Тем не менее, осталось 2 основных проблемы:

  1. Скрипты и папки с содержимым отображаются неправильно. Я получаю 404s на все ссылки на файлы в этих папках.
  2. Я не могу смотреть ужины на всех. Я получил:

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

и красная линия с надписью "<connectionStrings configSource="ConnectionStrings.config" /> Msgstr "За исключением того, что ConnectionStrings.config не существует на сервере, поэтому он не был важным файлом в соответствии с VS, и, таким образом, я понятия не имею, на что ссылается ошибка.

(быстрый поиск на моем локальном жестком диске приводит к обнаружению файла ConnectionStrings.config, в котором ничего нет)

Изменить 3:

Теперь я думаю, что я получаю эквивалент SQL Server 404, когда я иду, чтобы посмотреть обеды...

При установке соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске сервера / указан экземпляр)

Резюме, чтобы помочь другим, использующим ASP.NET MVC на IIS6, особенно Nerd Dinner:

  1. IIS 6 может выдать вам кучу 404, потому что он не понимает, что файлы не могут иметь расширений. Чтобы решить эту проблему, следуйте инструкциям в блоге Фила Хаака.
  2. Переписывание URL ASP.NET MVC не является волшебством. Он переписывает только те URL-адреса, которые передаются через код. Ссылки на скрипты, изображения, базы данных, прямые ссылки (т. Е. Теги href; не те, которые генерируются динамически) и т. Д. Не переопределяются в зависимости от каталога вашего приложения. Для приложения Nerd Dinner просмотрите страницы и добавьте "/nerddinner/" перед ссылками на эти ссылки. Замените "nerddinner" на имя вашего подкаталога.
  3. Возьмите базу данных и присоедините ее к SQL Server (или SQL Server Express) на вашем сервере. Добавьте пользователя сети в базу данных с ролями чтения / записи.
  4. Введите правильную строку подключения для вашей настройки. В моем случае я обращался к серверу по IP-адресу и использовал SQL Server 2005, поэтому моя строка подключения:

    <add name="NerdDinnerConnectionString" connectionString="Data Source=128.200.123.118; Initial Catalog=NerdDinner; Integrated Security=SSPI" providerName="System.Data.SqlClient.SqlConnection"/>

2 ответа

Решение

Скрипты и папки с содержимым отображаются неправильно. Я получаю 404s на все ссылки на файлы в этих папках.

В ASP.NET MVC файлы не отображаются один на один с URL, как они делают в ASP.NET. Вместо этого совпадение в таблице маршрутизации перенаправляет запрос GET или POST из браузера на метод контроллера в одном из ваших контроллеров. Оттуда контроллер решает (явно или по соглашению), какой вид отображать.

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

ConnectionStrings.config должен существовать на сервере, так как на него ссылаются в web.config. Это включаемый файл, поэтому в нем не обязательно должно быть что-либо. Но если на него ссылаются, его нужно включить на сервер, поэтому просто скопируйте его туда с вашей программой FTP.

Вы запускаете его на IIS6? Если да, вам нужно будет исправить таблицу маршрутизации, чтобы учесть расширение.ASPX, которое более или менее требуется IIS6.

У Фила Хаака есть хорошее прохождение, которое объясняет этот процесс. Он также объясняет, как вы можете сделать это без расширения.ASPX:
http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

Другие вопросы по тегам