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

时间:2012-11-07 15:32:58

标签: c# asp.net asp.net-mvc-3

我正在将asp.net 4项目迁移到MVC 3 - 计划在迁移完所有内容后迁移到MVC4。我跟着这篇文章:

http://www.hanselman.com/blog/IntegratingASPNETMVC3IntoExistingUpgradedASPNET4WebFormsApplications.aspx

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

public class HomeController : Controller
{
  public ActionResult Index()
  {
    return View();
  }
}

运行应用程序并检查标准的Aspx页面,然后工作正常,然后转到Controller的路径并获取“错误:值不能为空。参数名称:incomingMarkupParser”错误。所以,然后我删除了返回View();并将其替换为返回内容(“Hello world”);这根本没有问题。

所以我心想,该区域是否有问题...创建了一个Controllers and Views文件夹并再次尝试 - 同样的问题。

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有关,但我找不到什么。有没有其他人经历过这个,如果有的话,他们是如何克服它的呢?

提前致谢。

3 个答案:

答案 0 :(得分:1)

web.config中的所有Razor引用在哪里? (我怀疑这是真正的问题)请参阅this page for an example

您还可以尝试this link and the bit of code there查看所有异常(包括吞下的异常)

答案 1 :(得分:1)

您确定在视图文件夹中有web.config吗?我相信这是你的剃刀配置的东西。或者至少我是如何得到我的。尝试查看视图&gt;一个新的MVC项目的web.config,这是我的来源。

我希望这会有所帮助。

答案 2 :(得分:0)

您需要添加或修复

<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.NET MVC 4.你需要1.0 for ASP.NET MVC 3.我认为这可能是你的问题。