2012-11-07 125 views
2

我正在将一个asp.net 4项目迁移到MVC 3 - 计划一旦迁移一切都迁移到MVC4。我跟着这个帖子:混合asp.net 4和MVC应用程序

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

而创建的区域,增加了控制器和视图文件夹,创建控制器

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

运行应用程序,并检查标准的aspx页面,然后工作得很好,然后去了控制器的路径,并得到“错误:值不能为空。参数名称:incomingMarkupParser”错误。所以,我然后删除了返回View();并将其替换为返回内容(“Hello world”);这一切都没有问题。

所以我想到了自己,这个区域是否有问题......创建了一个Controllers和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> 

我知道这个问题是与剃刀,但我找不到什么。有没有其他人经历过这种情况,如果有的话,他们是如何克服它的?

在此先感谢。

+0

您是否手动将MVC引用添加到web.config?正如@PaulZhara所说,你的代码片段中没有任何Razor引用。 (剃刀生活在自己的集会中。) –

+0

不......我以为你不必这样做。看着另一个MVC3项目(不是混合),它不在那里。我是否需要将其作为程序集添加到我的web.config文件中? – Matt

+0

我已经添加了它,并得到一个HTTP错误500.19错误在 :( – Matt

回答

1

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

您也可以尝试this link and the bit of code there看到所有异常(包括吞噬)

+0

您链接到的scott博客文章是关于构建混合型mvc/asp.net应用程序(听起来有点麻烦,因为我喜欢),您是否尝试构建混合应用程序?我个人更喜欢,如果只是为了我自己的理智,将一个asp.net应用程序迁移到一个单独的MVC项目。 –

+0

我使用NuGet去获取我的软件包: – Matt

+0

PM> Install-Package Microsoft.AspNet.Razor 您正在从Microsoft下载Microsoft.AspNet.Razor,其许可协议可以在..... – Matt

1

你是否确信你有一个web.config在你的文件夹视图?我相信这是你的剃须刀配置的东西去。或者至少这是我得到我的。尝试查看一个新的MVC项目的视图> web.config,这是我的来源。

我希望这会有所帮助。

+0

我创建了一个新项目,并将所有内容都移动到了一起。感谢您的评论,但 – Matt

+0

啊,我太晚了,不能保存你的混合动力。该死的。但是,如果将来遇到这种情况,应该这样做。 –

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。这告诉运行时使用System.Web.Mvc程序集版本1,2和3. 另外,不要混合Razor引擎,2.0是ASP.NET MVC 4.您需要1.0 for ASP.NET MVC 3. I认为这可能是你的问题。

相关问题