C# asp.net 4和MVC的混合应用程序

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

我正在将一个asp.net 4项目迁移到MVC 3的过程中,计划在迁移完所有内容后再迁移到MVC4。我跟随这篇文章:

创建区域,添加控制器和视图文件夹,创建控制器

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。该死。但如果你以后遇到它,应该可以这样做。