最近在和同学一起研究毕业设计,准备模仿《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

《Pro ASP.NET MVC 4》异常整理的更多相关文章

  1. 【Pro ASP.NET MVC 3 Framework】.学习笔记.11.ASP.NET MVC3的细节:概览MVC项目

    书Adam The Definitive Guide to HTML5 Adam Applied ASP.NET 4 in Context and Pro ASP.NET 4 到此为止,我们已经学了为 ...

  2. WinDBg定位asp.net mvc项目异常崩溃源码位置

    项目介绍:asp.net mvc + angular +iis(windows)+windows server 系统莫名崩溃 最近有个系统默认奇妙崩溃50x,服务整体变成无响应,当运维告知我只有重启应 ...

  3. Pro ASP.NET MVC –第六章 MVC的基本工具

    在本章,我们将介绍每个MVC程序员"武器库"的三个重要工具:依赖注入容器.单元测试框架和mock工具.在本书,对于三个工具分别都只用了一种方式实现,但每个工具都还有其他的实现方式. ...

  4. Pro ASP.NET MVC –第四章 语言特性精华

    C#语言有很多特性,并不是所有的程序员都了解本书我们将会使用的C#语言特性.因此,在本章,我们将了解一下作为一个好的MVC程序员需要了解C#语言的特性. 每个特性我们都只是简要介绍.如果你想深入了解L ...

  5. Pro ASP.NET MVC 5 Framework.学习笔记.6.3.MVC的必备工具

    每个MVC程序员的军火库中,都有这三个工具:一个依赖注入(DI)容器,一个单元测试框架,一个模拟工具. 1.准备一个示例项目 创建一个ASP.NET MVC Web Application的Empty ...

  6. ASP.NET MVC显示异常信息

    开发ASP.NET多了,它的异常信息显示也习惯了.但在ASP.NET MVC中,却是另外一番情形. 以前只习惯使用IE浏览器,现在开发ASP.NET MVC程序,为了捕获到异常信息,Firefox的f ...

  7. [Asp.net MVC]HandleErrorAttribute异常过滤器

    摘要 在asp.net mvc中除了使用try...catch/finally来处理异常外,它提供了一种通过在Controller或者Action上添加特性的方式来处理异常. HandleErrorA ...

  8. 【Pro ASP.NET MVC 3 Framework】.学习笔记.12.ASP.NET MVC3的细节:URLs,Routing和Areas

    Adam Applied ASP.NET 4 in Context 1 介绍Routing系统 在引入MVC之前,ASP.NET假定被请求的URLs和服务器硬盘上的文件之间有着直接关系.服务器的任务是 ...

  9. 【Pro ASP.NET MVC 3 Framework】.学习笔记.9.SportsStore:Securing the Administration Features

    1 设置表单身份认证 因为ASP.NET MVC基于ASP.NET平台的核心,所以我们可以使用ASP.NET Form的身份认证,这是保持用户登录轨迹通用的方法.现在介绍最基本的配置. 在Web.co ...

随机推荐

  1. C# 6.0 功能预览 (一)

    一.索引的成员和元素初始化 1.1 原始初始化集合 Dictionary 1.2 键值初始化集合 Dictionary 1.3 运算符 $ 初始化集合 Dictionary 二.自动属性的初始化 一不 ...

  2. Elasticsearch Mantanence Lessons Learned Today

    Today I troubleshooted an Elasticsearch-cluster-down issue. Several lessons were learned: When many ...

  3. spring快速入门(四)

    一.在spring快速入门(三)的基础上,我们来了解BeanFactory及配置. Client package com.murong.client; import org.springframewo ...

  4. Objective-C 工厂模式(下) -- 抽象工厂模式

    相比简单工厂模式, 只有一个工厂 能生产的手机也是固定的 抽象工厂模式类似于有很多家工厂, 当用户要买什么手机就创建对应的工厂去生产 比如用户要买iPhone就创建一个Apple工厂来生产手机, 要买 ...

  5. slave IO流程之一:mysql登陆过程(mysql_real_connect)

    最近看了slave IO的源码,发现slave IO的写relay log貌似是单线程单连接的,这让我有点小失望. slave IO的主函数是handle_slave_io,处理流程如下: 图1 ha ...

  6. jsdoc

    一.javascript注释规范 我们在编写javascript文件的时候,一般会添加一些注释.例如一些文件.类.方法和属性都应该用合适的标记和类型进行注释.这里不但方便我们的阅读,也能养成一个好的习 ...

  7. HTML5系列:HTML5表单

    1. input元素新增类型 url类型 url类型的input元素是一种用来输入url的文本框,提交时如果该文本框中内容不是url格式,则不允许提交. <input type="ur ...

  8. PHP浅复制与深复制

    原文链接:http://www.orlion.ga/731/ php用clone复制对象有一个问题,下面用代码来说明问题: class Foo{ public $bar; public $name; ...

  9. JAVA基础代码分享--求圆面积

    问题描述 用户输入圆的半径,计算并显示圆的面积 代码分享 /** * @author hpu-gs * 2015/11/25 */ public class Circle { public stati ...

  10. SubSonic3.0插件分页查询速度测试

    使用SubSonic3.0一段时间了,一直都想找机会测试一下各种查询分页速度,对比一下插件的查询效率到底怎么样,所以昨天写好了测试程序,准备好1K.1W.10W.50W和100W记录的数据表,早上详细 ...