我有一个使用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的工作。
不幸的是,这项工作似乎已被取消。任何人都可以对它所说的内容以及周围的工作有所了解。
答案 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