MVC模式下unity配置,报错“No connection string named '**Context' could be found in the application config file”
写在前面: 第一次配置时好好的,后来第二次改到MVC模式,把依赖注入写成字典的单例模式时,由于新建的ORM(数据库映射模型EF),怎么弄都不用,一直报错"No connection string named '**Context' could be found in the application config file"(配置文件中找不到数据库context连接)调试了两小天问题,终于想到了是没有把EF模型中appconfig中的数据库连接复制到项目webconfig中导致的!!!改过之后果然好了,豁然开朗!
中间也发现了一个小的点:调试的时候因为配置有问题,就改成不用配置直接写的方式:(如下)
UnityContainer container = new UnityContainer();
container.RegisterType<DbContext, JDContext>();
container.RegisterType<IBaseService, BaseService>();
container.RegisterType<IUserMenuService, UserMenuService>(); IBaseService baseService = container.Resolve<IBaseService>();
IUserMenuService userservice = container.Resolve<IUserMenuService>();
JD_User a = userservice.Set<JD_User>().FirstOrDefault();
然后就报错BaseService是抽象类 不能实例化。 后来发现 这句不需要写出来
IBaseService baseService = container.Resolve<IBaseService>();
因为 IUserMenuService 继承了 IBaseService 实现IUserMenuService的时候自然就把基类带出来了实现了。
困惑了一天半 终于解决了。
以下是DI工厂实现
namespace Common
{
public class DIFactory
{
private static object _syncHelper = new object();
private static Dictionary<string, IUnityContainer> _UnityContainerDic = new Dictionary<string, IUnityContainer>(); public static IUnityContainer GetContainer(string containerName = "JDContainer")
{
if (!_UnityContainerDic.ContainsKey(containerName))
{
lock (_syncHelper)
{
if (!_UnityContainerDic.ContainsKey(containerName))
{
IUnityContainer container = new UnityContainer();
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "CfgFiles\\Unity.Config.xml");
Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
UnityConfigurationSection section = (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName);
section.Configure(container, containerName); _UnityContainerDic.Add(containerName, container);
}
}
}
return _UnityContainerDic[containerName];
}
}
}
以下是unity文件配置 (即上文代码中的 Unity.Config.xml )
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
</configSections>
<unity>
<sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Microsoft.Practices.Unity.Interception.Configuration"/>
<containers>
<container name="JDContainer">
<!--<register type="Interface.ITest, Interface" mapTo="Service.Test, Service" />-->
<register type="System.Data.Entity.DbContext, EntityFramework" mapTo="EF.Model.JDContext, EF.Model"/>
<register type="Interface.IBaseService, Interface" mapTo="Service.BaseService, Service" />
<register type="Interface.IUserMenuService, Interface" mapTo="Service.UserMenuService, Service" />
</container>
<!--<container name="testContainer">
<register type="Interface.ITest, Interface" mapTo="Service.Test, Service" />
<register type="System.Data.Entity.DbContext, EntityFramework" mapTo="EF.yuncaidbEntities, EF"/>
<register type="Interface.IBaseService, Interface" mapTo="Service.BaseService, Service" />
<register type="Interface.IUserService, Interface" mapTo="Service.UserService, Service" />
</container>-->
</containers>
</unity>
</configuration>
MVC模式下unity配置,报错“No connection string named '**Context' could be found in the application config file”的更多相关文章
- Unity在OpenGL模式下Shader编译报错
报错信息 GLSL compilation failed: 0(21) : error C7528: OpenGL reserves names containing '__' 双击报错VS自动打开V ...
- 在debug模式下运行不报错,换到release模式下报找不到某某库或文件的错。。解决办法
我遇到的问题是:把edit secheme调到debug模式运行没有问题,然后调到release模式的时候报目录下没有libTuyoo.a 解决办法 把断开真机设备,用IOS device下relea ...
- 【案例分享】使用ActiveReports报表工具,在.NET MVC模式下动态创建报表
提起报表,大家会觉得即熟悉又陌生,好像常常在工作中使用,又似乎无法准确描述报表.今天我们来一起了解一下什么是报表,报表的结构.构成元素,以及为什么需要报表. 什么是报表 简单的说:报表就是通过表格.图 ...
- 【转】Eclipse下启动tomcat报错:/bin/bootstrap.jar which is referenced by the classpath, does not exist.
转载地址:http://blog.csdn.net/jnqqls/article/details/8946964 1.错误: 在Eclipse下启动tomcat的时候,报错为:Eclipse下启动to ...
- [转]解决IIS下UTF-8文件报错乱码的问题
找了两天才找到解决办法…….晕晕晕...用第二种方法解决了. 网上找到的方法都没有写这一条 If objASPError.ASPDescription > "" Then 后 ...
- Linux系统下启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with
Linux系统下启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with 摘要 Li ...
- cocoapod引入FLEX,debug模式正常,Release报错library not found for -lXXX
cocoapod引入FLEX,debug模式正常,Release报错library not found for -lXXX, 因为podfile是这么写的: pod 'FLEX', '~> 2. ...
- window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error
window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error 解决: 如果没有配置环境,在安 ...
- linux下安装php报错configure: error: Cannot find MySQL header files under /usr/include/mysql.
linux下安装php报错configure: error: Cannot find MySQL header files under /usr/include/mysql. 2013-03-04 1 ...
随机推荐
- NET 4.5 中新增的特性调用者信息特性CallerMemberNameAttribute/CallerFilePathAttribute/CallerLineNumberAttribute
标题中所说的三个特性 CallerMemberNameAttribute / CallerFilePathAttribute / CallerLineNumberAttribute 我们统称为调用者信 ...
- 算力和AI-ZILLIZ
特征向量检索加速.https://www.zilliz.com/ 公司介绍: MegaWise异构众核加速数据库 MegaWise是ZILLIZ独立自主研发的新一代异构众核加速数据库系统.MegaWi ...
- ECMAScript 6.0基础入门教程
ECMAScript 6.0基础入门教程 转:https://blog.csdn.net/hexinyu_1022/article/details/80778727 https://blog.csdn ...
- Java 13 特性解读
Java 13 特性解读 转 https://blog.csdn.net/bjweimengshu/article/details/100978383 2017年8月,JCP执行委员会提出将 ...
- Dart函数方法
/* 内置方法/函数: print(); 自定义方法: 自定义方法的基本格式: 返回类型 方法名称(参数1,参数2,...){ 方法体 return 返回值; } */ void printInfo( ...
- 【linux】Linux 运行进程实时监控pidstat命令详解
简介 pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存.设备IO.任务切换.线程等.pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上 ...
- [错误处理]no matches found: connexion[swagger-ui] ?
问题原因: [ ] 中括号会影响shell脚本的执行 安装的时候在包名扩上双引号"" pip install "connexion[swagger-ui]" w ...
- JS语言中的JSON.parse()和JSON.stringify()
parse()用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":& ...
- No section matches selector - no section to be FIRST/LAST
1. 使用KEIL MDK ,STM32F405RG,编译的时候报错 .\Objects\ks3620_stm32f405_proj.sct(): error: L6236E: No section ...
- Java基础教程:垃圾回收
Java基础教程:垃圾回收 垃圾回收 垃圾回收(Garbage Collection,GC),顾名思义是释放垃圾占用的空间,防止内存泄漏.有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使 ...