MS MVC Preview 2 и .NET 3.5 sp1 - PullRequest
       8

MS MVC Preview 2 и .NET 3.5 sp1

0 голосов
/ 05 декабря 2008

У меня есть сайт, созданный с помощью MVC Preview 2, и я не успел перейти на последнюю версию, в основном из-за необходимого количества изменений, и у меня не было времени. Во всяком случае, прошлой ночью мой хост установил .NET 3.5 sp1, и он убил мой сайт. Это определенная проблема (вот что вы получаете за использование предварительных бета-версий) на этом сайте http://haacked.com/archive/2008/05/12/sp1-beta-and-its-effect-on-mvc.aspx, и он предлагает перейти на этот сайт для работы вокруг http://www.asp.net/downloads/3.5-SP1/Readme/default.aspx.

К сожалению, обходной путь, похоже, был устранен. Может ли кто-нибудь пролить свет на то, что он сказал, и каковы обходные пути.

1 Ответ

1 голос
/ 05 декабря 2008

Возможно, эти инструкции полезны, они предназначены для переноса сайта с mvc preview 2 в mvc preview 3. Поскольку предварительный просмотр 3 сайтов не затрагивается бета-версией sp1, надеюсь, это поможет:

Обновление существующего приложения Preview2 до Preview 3 Информация в этом разделе описывает изменения, которые вы должны внести, чтобы изменить приложение ASP.NET MVC, созданное с выпуском Preview 2, чтобы оно работало с выпуском Preview 3.

Изменения кода Обновите ссылки на следующие сборки, чтобы они указывали на новые версии Preview 3 сборок:

System.Web.Abstractions 
System.Web.Routing 
System.Web.Mvc 

По умолчанию эти сборки находятся в следующей папке:

%ProgramFiles%\Microsoft ASP.NET\ASP.NET MVC Preview 3

Для всех существующих методов действия измените тип возвращаемого значения с void на ActionResult. Везде, где вы вызываете RenderView, измените его на вызов, чтобы вернуть View. Вы можете найти RenderView( и заменить его на return View(.

Везде, где вы звоните RedirectToAction, перед вызовом введите ключевое слово return. Найдите RedirectToAction( и замените его return RedirectToAction(.

Если вы используете строго типизированную страницу, замените <%= ViewData.PropertyName %> на <%= ViewData.Model.PropertyName %>. Вместо того, чтобы заменять объект ViewData вашим строго типизированным объектом, инфраструктура MVC теперь устанавливает свойство Model для предоставленного вами экземпляра.

В файле Global.asax удалите определение маршрута для Default.aspx. В шаблоне Preview 2 по умолчанию маршрут выглядел следующим образом:

routes.Add(new Route("Default.aspx", new MvcRouteHandler())
{

  Defaults = new RouteValueDictionary(new { controller = "Home", action = "Index", id = "" }),

});

В файле Global.asax найдите следующий маршрут MVC по умолчанию:

routes.Add(new Route("{controller}/{action}/{id}", new MvcRouteHandler())
{

  Defaults = new RouteValueDictionary(new { action = "Index", id = "" }),

});

Замените его следующим маршрутом:

routes.MapRoute(
    "Default",                                      // Route name

    "{controller}/{action}/{id}",                   // URL with parameters

    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults

);

Добавьте следующую строку в самом начале метода RegisterRoutes:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

Отредактируйте файл Default.aspx и добавьте следующую строку:

<% Response.Redirect("~/Home") %> 

Это перенаправление не требуется для IIS 7. Это обходной путь для проблемы с работой веб-сервера, встроенного в Visual Studio (сервер разработки ASP.NET), с маршрутизацией.

Изменения конфигурации В файле Web.config вы должны изменить атрибут type записи httpHandler в разделе UrlRoutingHandler на System.Web.HttpForbiddenHandler.

Для этого найдите в файле следующую строку:

path="UrlRouting.axd" type="System.Web.Routing.UrlRoutingHandler, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 

Заменить его следующей строкой:

path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

Поскольку номера версий сборок System.Web.Abstractions и System.Web.Routing были изменены на 0.0.0.0, необходимо обновить информацию о версии в файле Web.config. В файле Web.config найдите следующую строку:

System.Web.Routing, Version=3.5.0.0 

Заменить его следующей строкой:

System.Web.Routing, Version=0.0.0.0

Поиск следующей строки:

System.Web.Abstractions, Version=3.5.0.0

Заменить его следующей строкой:

System.Web.Abstractions, Version=0.0.0.0
...