最近在和同学一起研究毕业设计,准备模仿《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. 多线程中的锁系统(三)-WaitHandle、AutoResetEvent、ManualResetEvent

    本章主要介绍下基于内核模式构造的线程同步方式,事件,信号量. 阅读目录: 理论 WaitHandle AutoResetEvent ManualResetEvent 总结 理论 Windows的线程同 ...

  2. Windows Azure Storage (17) Azure Storage读取访问地域冗余(Read Access – Geo Redundant Storage, RA-GRS)

    <Windows Azure Platform 系列文章目录> 细心的用户会发现,微软在国外和国内的数据中心建设都是成对的,比如香港数据中心(Asia East)和新加坡的数据中心(Sou ...

  3. WCF 客户端代理生成 通过SvcUtil.exe

    WCF服务调用通过两种常用的方式:一种是借助代码生成工具SvcUtil.exe或者添加服务引用的方式,一种是通过ChannelFactory直接创建服务代理对象进行服务调用. 下面简单说下如何通过Sv ...

  4. C#设计模式-建造者模式

    在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成. 例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象,它是由C ...

  5. spring定时任务之quartz

    在Spring中,使用JDK的Timer类库来做任务调度功能不是很方便,关键它不可以象cron服务那样可以指定具体年.月.日.时和分的时间.你只能将时间通过换算成微秒后传给它.如任务是每天执行一次,则 ...

  6. Redis在windows环境下ThinkPHP的安装和使用

    1.Redis概述: 2.Redis在windows环境下的安装: 下载地址:https://github.com/dmajkic/redis/downloads,选取其中一个zip压缩包:

  7. EF循环迭代导致如此严重的性能丢失,你知道?

    前言 在工作当中呢,没怎么用到过EF,所以为了遗忘这一部分知识,偶尔会去写写小的demo,偶然机会在EF循环迭代中发现居然影响性能这么严重,当我们在用时或许大概也许可能都曾这样写过,但是你注意到了吗, ...

  8. 最大值最小化(DP)

    题目来源:网易有道2013年校园招聘面试一面试题 题目描述: 在印刷术发明之前,复制一本书是一个很困难的工作,工作量很大,而且需要大家的积极配合来抄写一本书,团队合作能力很重要.当时都是通过招募抄写员 ...

  9. 分析MariaDB初始化脚本mysql_install_db

    在初始化MySQL的过程中经常会碰到各种问题,如 FATAL ERROR: Could not find ./bin/my_print_defaults ERROR: Can't create/wri ...

  10. RHEL 6.3 详细安装教程

    以前刚接触linux时,什么都不懂,为了学习,在电脑上安装双系统(原系统为Win7),吃过不少苦头,在网上搜教程,很多都是语焉不详,导致安装过程中战战兢兢.最近朋友面试运维,面试官有考他对linux安 ...