私はコントローラのために別々のプロジェクトを持っているMVC4ソリューションを持っています。これはすべて正常に動作します。Castle Windsor IOCコントローラを搭載したMVC 4セッションがNullです
私は今まで何度も単一プロジェクトソリューションで行ってきたように、Castle Windsor IOCを統合しました。私のWebサイトが起動するときにリポジトリの依存関係を呼び出すように正しく登録されたようです。
しかし、私のすべてのコントローラはBaseControllerクラス(コントローラを自然に継承します)を継承し、BaseControllerのコンストラクタでセッションオブジェクトにアクセスしています。
ポストキャッスルウィンザーこれはもう機能していません。 Sessionオブジェクトはnullです。ここで
は、私は、セッション変数にこのメッセージを格納していた理由は、それがCSHTMLファイルに条件文で使用されていることであるBaseController
protected BaseController(ICustomerRepository customerRepository, ISystemSettingsRepository systemSettingsRepository)
{
_customerRepository = customerRepository;
_systemSettingsRepository = systemSettingsRepository;
_timeoutMinutes = _systemSettingsRepository.GetSystemSettings().TimeoutMinutes;
Session["KYCWarning"] = _customerRepository.GetMessage("KYCWarning");
}
からコード
@{
var kycWarning = Session["KYCWarning"].ToString();
var settingShowKYCReminder = ConfigurationManager.AppSettings["ShowKYCReminder"];
var showKYCReminder = !string.IsNullOrWhiteSpace(settingShowKYCReminder) && (bool.Parse(settingShowKYCReminder));
}
@if (showKYCReminder && Session["CurrentSession"] != null && !string.IsNullOrWhiteSpace(kycWarning) && !((SessionModel)Session["CurrentSession"]).Customer.KycAuthorised)
{
<div class="">
<div class="col-md-12 WarningMessageBox">
<span>@kycWarning</span>
</div>
</div>
}
これはあります一つの例では、コントローラ内でSessionの他の用途があり、コードがこの例外を越えて到達可能かどうかを判断できません。
誰もがこれが起こっている理由と解決策を提案できますか?コントローラクラスを継承するコントローラは、常にセッションにアクセスできることを理解しました。
ありがとうございます。
さらに、別のコントローラープロジェクトをメインのWebプロジェクトに戻しましたが、実際にはそこにいる必要はもうなくなりました。それでも同じ問題が発生します。 – IntoNET