我正在使用与Unity一起使用的MVC应用程序来注册我的项目的所有依赖关系。我也使用DAL的实体框架。 在我的本地机器中,应用程序运行良好,但是在我部署到服务器上时,Unity在尝试解析依赖关系时收到错误消息。底层提供程序在当时打开失败Unity解决依赖关系
底层提供程序在打开时失败。 ...在异常时,容器是:从IClass映射的解析类...调用MyDbContext的构造函数(System.String connectionName)
1-这是否与连接字符串结构有关系?
贝娄是我的连接字符串
<add name="DBConnection" connectionString="Server=MyServer;Database=MyDatabase;Trusted_Connection=True;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
此时此刻我没有访问DB以检查IIS用户在服务器上的权限运行的任何查询,但假如它不't,这与Unity在尝试解析连接字符串时的错误有任何关系吗?
2- Unity尝试解析DBContext时尝试打开与DB的连接吗?
这里是我很注入参数
var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
container.RegisterType<IUnitOfWork, MyDbContext>(
Activator.CreateInstance<T>(),
new InjectionConstructor(connectionString));
异常可能包含你需要解决这个问题的一切,但你只看顶级消息。抓住它,调用ToString,然后保存在某个地方。这将捕获包括内部例外在内的全部细节。 – Will
我会说最重要的是 - 不要在构造函数中打开SQL连接。任何对数据库的访问应该使用延迟加载,设置DI是关键基础设施的一部分(不应该有IO操作)。 –
这是最后一个异常,我也注册在服务器上的EventViewer – Heinrich