《Pro ASP.NET MVC 4》异常整理

最近在和同学一起研究毕业设计,准备模仿《Pro ASP.NET MVC 4》里面的SportsStore设计模式和测试驱动开发.

由于和书中VS版本不同,发现不少问题,在此总结.

 

用户代码未处理 System.InvalidOperationException  (msdn: 当方法调用对于对象的当前状态无效时引发的异常。)
HResult=-2146233079
Message=未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序。请确保在应用程序配置文件的“entityFramework”节中注册了该提供程序。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=260882。
Source=EntityFramework

  

解决方法:

添加引用:项目\文件夹\packages\EntityFramework.6.1.3\lib\net40\EntityFramework.SqlServer.dll

 

System.Reflection.TargetInvocationException (由通过反射调用的方法引发的异常。)

当时是在DbContext的实现类初始化时报错

private EFDbContext context = new EFDbContext();

  

解决方法:添加同一个引用,添加的引用版本不同,可能会出现此异常

\packages\EntityFramework.6.1.3\lib\net40\EntityFramework.SqlServer.dll
\packages\EntityFramework.6.1.3\lib\net40\EntityFramework.dll

 

单元测试异常:

Mock<IProductRepository> mock = new Mock<IProductRepository>();
mock.Setup(m => m.Products).Returns(new Product[] {
new Product { ProductID=1,Name="P1"},
new Product {ProductID=2,Name="P2" },
new Product {ProductID=3,Name="P3" },
new Product { ProductID=4,Name="P4"},
new Product {ProductID=5,Name="P5" }
}.AsQueryable());

ProductController controller = new ProductController(mock.Object);
controller.PageSize = 3;

IEnumerable<Product> result = (IEnumerable<Product>)controller.List(2).Model; 
测试名称:	Can_Paginate
测试全名:	SportsStore.UnitTests.UnitTest1.Can_Paginate
测试源:	C:\Users\ainsc\Desktop\SportsStore\SportsStore.UnitTests\UnitTest1.cs:第 16 行
测试结果:	未通过
测试持续时间: 	0:00:00.688407

结果 的堆栈跟踪:	
在 System.Web.Mvc.BuildManagerViewEngine..ctor(IViewPageActivator viewPageActivator, IResolver`1 activatorResolver, IDependencyResolver dependencyResolver, VirtualPathProvider pathProvider)
   在 System.Web.Mvc.WebFormViewEngine..ctor(IViewPageActivator viewPageActivator)
   在 System.Web.Mvc.WebFormViewEngine..ctor()
   在 System.Web.Mvc.ViewEngines..cctor()
 --- 内部异常堆栈跟踪的末尾 ---
    在 System.Web.Mvc.ViewEngines.get_Engines()
   在 System.Web.Mvc.Controller.View(String viewName, String masterName, Object model)
   在 System.Web.Mvc.Controller.View(Object model)
   在 SportsStore.WebUI.Controllers.ProductController.List(Int32 page) 位置 C:\Users\ainsc\Desktop\SportsStore\SportsStore.WebUI\Controllers\ProductController.cs:行号 29
   在 SportsStore.UnitTests.UnitTest1.Can_Paginate() 位置 C:\Users\ainsc\Desktop\SportsStore\SportsStore.UnitTests\UnitTest1.cs:行号 35
结果 的消息:	
测试方法 SportsStore.UnitTests.UnitTest1.Can_Paginate 引发了异常: 
System.TypeInitializationException: “System.Web.Mvc.ViewEngines”的类型初始值设定项引发异常。 ---> System.IO.FileNotFoundException: 未能加载文件或程序集“System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。警告: 程序集绑定日志记录被关闭。
要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。
注意: 会有一些与程序集绑定失败日志记录关联的性能损失。
要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

解决方法:

添加引用,程序集 System.Web.WebPages

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章