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 ...
随机推荐
- stringstream用法
stringstream用法 1.头文件:#include<sstream> 2.stringstream是C++提供的串流(stream)物件,其中: clear()重置流的标志状态:s ...
- 使用.whl文件安装torch和pytorch的方法
当使用pip install torch torchvision命令下载感觉很慢时 可以先到下面的网页将.whl文件下载下来,然后再运行安装即可: torchvision也是 下载好了以后,运行: p ...
- TCP和TLS/SSL会话细节
TCP数据段格式说明TCP建立连接和断开连接细节Https如何保证通信安全一次Https网络请求通信细节网络数据包分析工具wireshark的使用问题:SYN.ACK.FIN具体含义是什么?TCP建立 ...
- C++接口的概念
满足下面条件: 1.类中没有定义任何的成员变量 2.所有的成员函数都是公有的 3.所有的成员函数都是纯虚函数 4.接口是一种特殊的抽象类
- Qt编写气体安全管理系统25-位置调整
一.前言 位置调整功能,以前是直接写在设备按钮这个自定义控件类中,核心就是安装事件过滤器,识别鼠标按下.鼠标移动.鼠标松开,这三个event,做出相应的处理即可,后面发现这个功能其实很多自定义控件或者 ...
- Docker入门之docker-compose
参考:https://blog.51cto.com/9291927/2310444 一,Docker-compose简介 1,Docker-compose简介 Docker-Compose项目是Doc ...
- jvm(5)---垃圾回收(回收算法和垃圾收集器)
1.垃圾回收算法 1.1 标记-清除算法 算法分为“标记”和“清除”阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象.它是最基础的收集算法,效率也很高,但是会带来两个明显的问题 ...
- Ubuntu 新装服务器部署流程
1.设定时区 rm -f /etc/localtime cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 2.配置apt-get源 sed -i ...
- python 调 java(胶水就是胶水)
java门外汉用python调java, 一.安装java环境(linux) 1.首先要去下载好JDK,Java SE 8的官方网址是http://www.oracle.com/technetwork ...
- MySQL(八)事务的隔离级别
一.事务的并发问题 1.脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 2.不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并 ...