web.configではなくコードでセッション状態プロバイダーを設定する機能が必要です。Application_Startにコードを追加してみました
System.Configuration.Configuration _configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/");
var sessionStateSection =
(System.Web.Configuration.SessionStateSection)_configuration.GetSection("system.web/sessionState");
sessionStateSection.Providers.Clear();
var customSessionStateProvider = new ProviderSettings(DEFAULT_SESSION_PROVIDER, DEFAULT_MEMBERSHIP_PROVIDER);
customSessionStateProvider.Parameters.Add(CONNECTION_STRING_NAME, DEFAULT_CONNECTION);
sessionStateSection.Providers.Add(customSessionStateProvider);
sessionStateSection.Mode = System.Web.SessionState.SessionStateMode.Custom;
sessionStateSection.Timeout = new TimeSpan(0, 20, 0);
sessionStateSection.CustomProvider = DEFAULT_SESSION_PROVIDER;
ただし、問題は、セッションがカスタムではなくInProcモードに戻っていることです。コードでプロバイダーを宣言する方法はありますか?