質問: "test" HttpContext.Current.Application.UnLock() ``` ###### テスト用ソリューションの作成 簡単なソリューションを作成して確認しました。 新しいプロジェクトの作成で、ASP.NET Webアプリケーションを選択してTestMVCソリューションを作成 (手順再現の為、図ではWebApplication1) ![新しいプロジェクト](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/fe3a5275f556a1f951247a38f62d92e8.png) MVCを選択 ![MVC](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/11a80fbdba04ff6564be9428747833f5.png) 作成されたソリューションに、共通処理等を実装するBusinessLogicsプロジェクトを クラスライブラリとして追加 ![プロジェクト追加](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/c28a98a89b1396f6651c02415eed28d4.png) Controllers等から共通処理を使用する為、TestMVCにBusinessLogicsプロジェクトの参照を追加 ![参照設定](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/dbcb26d3e97448e4ced4a0b963a80aeb.png) 作成されたTestMVCプロジェクトのGlobal.asaxに サイト共通のプロパティとしてTestVarを追加 ![共通プロパティ追加](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/2df987c2e9ded439dc95770906c87057.png) BusinessLogicsプロジェクト側のクラスから、Global.asaxに追加したTestVarを参照したいが、 BusinessLogicsプロジェクトからTestMVCへの参照設定ができず、 参照することができない ![共通処理プロジェクト側からの共通プロパティ参照](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/e069a9aff4440e37e6febeb1cd9c5f30.png)
回答: 何故循環参照になったのかやっとわかりました。理解が遅くてすみません。 まず最初にMVC プロジェクトからクラスライブラリプロジェクトへの参照設定を行って、その後クラスライブラリプロジェクトから MVC プロジェクトへの参照設定を行ったときに循環参照エラーが出たということですね。 クラスライブラリプロジェクトのコードから MVC プロジェクト内のクラスやフィールドを見えるようにするためだと思いますが、そもそもそういうことはできないはずです。 MVC プロジェクトからクラスライブラリプロジェクトのクラスを初期化して使っているのだと思いますが、であれば、その時にMVC プロジェクトで Global.asax の静的フィールドを取得してクラスライブラリプロジェクトに渡してやる他方法はなさそうです。 具体的には以下のような感じです。これでは質問者さんの望むことはできませんか? **Global.asax.cs** !イメージ説明 **クラスライブラリ** !イメージ説明 **Controller / Action Method** !イメージ説明 質問に対するコメントに書いたことですが、HttpApplicationState でも Global.asax.cs に記述する静的フィールドでも、(1) Web ファーム/ガーデンでは使えない、(2) ワーカープロセスのリサイクルで消えてしまう、(3) サーバーのメモリを圧迫するというデメリットがあります。それを考えると、個人的にはあまり利用度は高くなさそうだと思っています。