MS MVC Preview 2和.NET 3.5 sp1

时间:2008-12-04 21:53:56

标签: asp.net-mvc .net-3.5

我有一个使用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 个答案:

答案 0 :(得分:1)

也许这条说明很有用,它们是将mvc预览2上的网站迁移到mvc预览版3.由于预览3网站不受beta版本1的影响,我希望它有所帮助:

将现有的Preview2应用程序升级到预览3 本节中的信息描述了修改使用Preview 2版本创建的ASP.NET MVC应用程序必须进行的更改,以便它可以与Preview 3版本一起使用。

代码更改 更新对以下程序集的引用以指向程序集的新预览版本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 %>。 MVC框架现在将Model属性设置为您提供的实例,而不是用强类型对象替换ViewData对象。

在Global.asax文件中,删除Default.aspx的路由定义。在默认的预览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服务器如何使用路由的问题的解决方法。

配置更改 在Web.config文件中,您必须将UrlRoutingHandler部分中的httpHandler条目的type属性更改为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