我正在使用與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