MVC4应用程序面向.NET 4.0,但似乎需要.NET 4.5运行(MVC4 App Target

2019-10-29 06:53发布

好了,我问了一个问题在这里描述我是如何得出这个结论来了。 我已经看过了网络上,并发现给我的答案,或者让我足够接近我能跃升到干脆把它类似的问题,但一个也没有。 我在Visual Studio 2012个开发目标的MVC 4应用程序的.NET 4.0框架作为我们的生产服务器目前不能升级到.NET 4.5。 在VS 2012和我的本地IIS应用程序运行非常好。 然而,当我部署它给我们的临时服务器,其中只有.NET 4.0,它不会完全运行,虽然它显示的登录页面。 它不会,但是,显示注册或忘记了登录页面。

事情我已经尝试:

  1. 运行ASPNET_REGIIS.EXE -ir,但因为我们已经有了ASP.NET 4个应用程序的运行是没有必要的 - [绝望]
  2. 卸下和在web.config中添加,UrlRoutingModule-4.0
  3. 确保所有dll的目标.NET 4.0
  4. ...将列出更多的时候我回到明天上班

在我继续故障排除工作,我能够确定的是,用户登录并通过身份验证后,抛出的唯一错误是一个说明它无法找到其在错误的目录存在我的错误页面。 补救此之后,它仅比我的帐户,登录方法出现错误没有其它的可用信息显示错误页面。 我还检查SQL Server和注意到,测试用户的LastLogon场正在更新其验证了我对SQL和EF5连接。 在这一点上我补充记录,并能确定用户实际上验证,但在BaseController这是负责路由身份验证的用户主页/索引页面的代码似乎从来不火(看到完整的代码在这里 )。

排出几个小时试图隔离故障代码后,一时兴起,我安装了.NET 4.5临时服务器和你瞧,它的工作如预期。 我能使用的东西,是用于.NET 4.5? 我使用的唯一额外的插件有:

  • TwitterBootstrapMVC
  • Grid.MVC
  • 实体框架5.0
  • ...将列出更多的时候我回到明天上班

和其他几个jQuery插件,两者都不需要.NET 4.5。 我会比感激更多,如果有人能指导我到正确的路径,以帮助解决这一难题。 我知道你们在这里,跟我一样,喜欢挑战。 让我们来看看,如果我这样做之前,任何人都可以算出这一个。

障碍的唯一用途是要克服。 所有这一切的障碍确实有勇敢的人,不是吓唬他们,而是要挑战他们。

                                                                      ~ Woodrow Wilson

Answer 1:

OK,我发现了什么事错了。 对于一些我的控制器,我需要一个额外的参数,我不希望使用查询字符串,所以我增加了一个额外的URL参数来我RouteConfig:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}/{xid}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, xid = UrlParameter.Optional }
);

还没有研究为什么会在4.5工作,而不是4.0,但是当我找到它,我将发布一个解释或者链接到这里的解释,以防有人发现自己在一个类似的咸菜多少时间。 如果有人读忧虑就此阐述,请随意。



文章来源: MVC4 App Targets .NET 4.0 but seems to Require .NET 4.5 to Run