C# ASP.NET MVC3升级版-“;方法[whatever]尝试访问方法System.Web.Mvc.Controller.View(…)失败“;

C# ASP.NET MVC3升级版-“;方法[whatever]尝试访问方法System.Web.Mvc.Controller.View(…)失败“;,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我有一个在MVC2中运行良好的单元测试。测试只定义控制器上的操作、必要的存根,并测试视图的名称。但是,在升级到MVC3之后,当我调用该方法时,会出现上述错误。站点MVC3升级工作正常;我只是因为升级而导致这些单元测试失败。谢谢 以下是我的行动: public partial class GadgetController { [SetterProperty] public IATCGadgetProxy ATCGadgetService { get; set; } pub

我有一个在MVC2中运行良好的单元测试。测试只定义控制器上的操作、必要的存根,并测试视图的名称。但是,在升级到MVC3之后,当我调用该方法时,会出现上述错误。站点MVC3升级工作正常;我只是因为升级而导致这些单元测试失败。谢谢

以下是我的行动:

public partial class GadgetController
{
    [SetterProperty]
    public IATCGadgetProxy ATCGadgetService { get; set; }

    public ActionResult LoadForums(bool popularOnly, bool myThreads, int itemCount)
    {
        var model = ATCGadgetService.LoadForums(popularOnly, myThreads, itemCount);

        return View("AskTheCommunity-Forums", model);
    }
}
这是测试。当它从操作返回视图时失败

[TestMethod]
public void Test_Forums_Action_Type()
{
    GadgetController controller = new GadgetController();
    controller.ATCGadgetService = new ATCGadgetServiceStub();
    ViewResult result = controller.LoadForums(false, false, 10) as ViewResult;

    Assert.IsNotNull(result);
    Assert.AreEqual("AskTheCommunity-Forums", result.ViewName);
}

将一个项目升级到MVC 3让我抓狂的原因之一就是这些奇怪的、无法解释的错误。直到我发现并不是所有的项目都升级到MVC 3(在您的例子中,这可能是测试项目)并保留在MVC 2中,这导致了一些非常奇怪的行为,比如您描述的行为。请检查测试项目中System.Web.Mvc(可能还有相关程序集)的版本。

我知道这是一个旧线程,但我刚刚在Mvc 5.2.3中遇到了相同的错误。。。但是使用Xunit。归根结底,这并不重要,因为解决问题的方法是一样的

首先,您必须确保MVC已添加到您的测试项目中。我通过NuGet添加了它:

安装软件包Microsoft.AspNet.Mvc-版本5.2.3

或者,您可以将该版本更改为您正在使用的任何MVC版本

然后,我仍然有错误。我刚刚发现App.config页面缺少信息。一旦我确定我有了这些台词,一切都正常了:

<?xml version="1.0" encoding="utf-8"?>
<configuration>

    <!-- Other config here -->

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>


请显示您正在尝试测试的代码以及您的测试。在目前的状态下,你的问题很难回答。@Ryan,这对你有帮助吗?你没有给出任何反馈。当我编译一个引用MVC 4的项目,然后部署到一个有MVC 3的网站时就是这样。我改变了对MVC3的引用,事情开始运作了。谢谢