《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

 

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