2

我正在将一个 asp.net 4 项目迁移到 MVC 3 - 并计划在迁移所有内容后迁移到 MVC4。我关注了这篇文章:

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

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

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

运行应用程序并检查标准的 Aspx 页面,然后工作正常,然后转到控制器的路径并得到“错误:值不能为空。参数名称:incomingMarkupParser”错误。所以,我然后删除了 return View(); 并将其替换为 return Content("Hello world"); 这完全没有问题。

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

System.Web.Razor 是 2.0.0.0 版 System.Web.WebPages 是 1.0.0.0 版(也试过 2 版)

网络配置

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

提前致谢。

4

3 回答 3

1

您在 web.config 中的所有 Razor 引用在哪里?(我怀疑这是真正的问题)请参阅此页面以获取示例

你也可以试试这个链接和那里的代码来查看所有异常(包括那些被吞没的)

于 2012-11-07T15:49:10.380 回答
1

你确定你的views文件夹中有一个web.config吗?我相信这就是你的剃须刀配置的地方。或者至少我就是这样得到我的。尝试查看 Views > web.config 以获得新的 MVC 项目,这就是我的来源。

我希望这有帮助。

于 2013-03-27T15:05:30.490 回答
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。对于 ASP.NET MVC 3,你需要 1.0。我认为那可能是你的问题。

于 2013-06-03T09:51:30.607 回答