C# asp.net 4和MVC的混合应用程序
我正在将一个asp.net 4项目迁移到MVC 3的过程中,计划在迁移完所有内容后再迁移到MVC4。我跟随这篇文章: 创建区域,添加控制器和视图文件夹,创建控制器C# asp.net 4和MVC的混合应用程序,c#,asp.net,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc 3,我正在将一个asp.net 4项目迁移到MVC 3的过程中,计划在迁移完所有内容后再迁移到MVC4。我跟随这篇文章: 创建区域,添加控制器和视图文件夹,创建控制器 public class HomeController : Controller { public ActionResult Index() { return View(); } } 运行应用程序并检查标准的Aspx页面,然后工作正常,然后转到控制器的路径并获得“错误:值不能为null。参数名称:incomin
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
运行应用程序并检查标准的Aspx页面,然后工作正常,然后转到控制器的路径并获得“错误:值不能为null。参数名称:incomingMarkupParser”错误。因此,我随后删除了return视图();并将其替换为返回内容(“Hello world”);这一点都没有问题
所以我想,这个地区有问题吗。。。创建了控制器和视图文件夹并重试-相同的问题
System.Web.Razor是2.0.0.0版
System.Web.WebPages的版本为1.0.0.0(也尝试了版本2)
Web.Config
<assemblies>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages"/>
</namespaces>
我知道问题出在剃须刀上,但我找不到什么。还有其他人经历过这种情况吗?如果有,他们是如何克服的
提前感谢。您的Razor参考资料在web.config中的什么位置?(我怀疑这才是真正的问题)看到了吗
您还可以尝试查看所有异常(包括被吞没的异常)您是否确保在视图文件夹中有一个web.config?我相信这就是你的剃须刀配置的地方。至少我是这样得到我的。尝试查看Views>web.config以获得一个新的MVC项目,这就是我的项目的来源 我希望这有帮助。您需要添加或修复
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
到您的web.config。这会告诉运行时对版本1、2和3使用System.Web.Mvc程序集。
另外,不要混合使用Razor引擎,2.0是ASP.NETMVC4。ASP.NET MVC 3需要1.0。我想这可能是您的问题。您是否手动将MVC引用添加到web.config?正如@PaulZhara所说,您的代码片段中没有任何Razor引用。(剃须刀生活在它自己的组件中。)不。。。我以为你不必这么做。看看另一个MVC3项目(不是混合型),它不在那里。是否需要将其作为程序集添加到我的web.config文件中?我已将其添加到中,并在上获得http错误500.19 it错误:(您可以尝试创建一个新的默认MVC Razor web应用程序,并将web.config复制到您的项目中。在Visual Studio中查看您的项目时,还可以确保Razor程序集存在。您链接到的scott博客文章都是关于构建混合MVC/asp.net应用程序的(听起来有点混乱),您是否正在尝试构建一个混合应用程序?就我个人而言,如果只是为了我自己的理智,我更愿意将asp.net应用程序迁移到一个单独的MVC项目。我使用NuGet去为我获取软件包:PM>安装包Microsoft.AspNet.Razor您正在从Microsoft下载Microsoft.AspNet.Razor,许可协议可在..I获得然后意识到我也需要Mvc软件包,并获得了版本3:安装软件包Microsoft.AspNet.Mvc-版本3.0.20105.1I我创建了一个新项目,并将所有内容都转移到了另一个版本。谢谢你的评论。啊,我来不及保存你的hybrid。该死。但如果你以后遇到它,应该可以这样做。