ASP.NET + C# で構築されたセッション変数を保持できるかどうかを知りたいですか?
アプリケーションにマイナーな変更を加えて再構築する必要があるたびに、再度ログインしてその後操作を行う必要があるため、これを尋ねます...時間がかかります。
回避策がない場合は、常にログインするテスト モードを設定するか、ログイン手順を自動化できますが、ビルド後にセッションを保持するだけで時間を節約できます。
ASP.NET + C# で構築されたセッション変数を保持できるかどうかを知りたいですか?
アプリケーションにマイナーな変更を加えて再構築する必要があるたびに、再度ログインしてその後操作を行う必要があるため、これを尋ねます...時間がかかります。
回避策がない場合は、常にログインするテスト モードを設定するか、ログイン手順を自動化できますが、ビルド後にセッションを保持するだけで時間を節約できます。
アプリケーションの再起動後も存続するState Server または SQL Server セッション状態モードを使用するようにテスト サーバーを変更できます。
開発中に認証を扱いたくないときに、このハックを使用しました。
protected void Page_PreInit(object sender, EventArgs e)
{
// Fake authentication so I don't have to create a damn Login page just for this.
System.Web.Security.FormsIdentity id = new FormsIdentity(new FormsAuthenticationTicket("dok", false, 30));
string[] roles = { "a" };
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
}
これは、配置したページでのみ機能しますが、ベース ページに追加することもできます。
コードを test/QA/UAT/prod にプロモートする前に、必ずこれを削除する必要があります。
この回答は、DOKの回答を効果的に作り直したものであるため、評判を生み出さないようにするためのコミュニティwikiです。気に入ったら、DOKの回答に賛成票を投じてください。
@Dok、回答を編集してこれを組み込む場合は、編集してください。喜んでこの回答を削除します。:)
DOK、あなたの回答に対する私のコメントで述べたように(そしておそらくあなた自身の解決策のためのいくつかの助け)、次のことをしたいかもしれません:
#if DEBUG //As mentioned by DOK in the comments. If you set debug to false when building for deployment, the code in here will not be compiled.
protected void Page_PreInit(object sender, EventArgs e)
{
bool inDevMode = false;
inDevMode = bool.Parse(ConfigurationManager.AppSettings["InDevMode"]); //Or you could use TryParse
if(inDevMode)
{
// Fake authentication so I don't have to create a damn Login page just for this.
System.Web.Security.FormsIdentity id = new FormsIdentity(new FormsAuthenticationTicket("dok", false, 30));
string[] roles = { "a" };
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
}
}
#endif
これをアクティブにして誤ってデプロイしないようにするには、アプリの設定を別の構成ファイル (およびデバッグ セクション) に含めます。Web 配置プロジェクトを使用する場合、開発構成設定を 1 つのファイルに入れ、ライブ構成ファイルを別のファイルに入れることができます (これは通常、dev.config と live.config です!)。
たとえば、web.config で:
<appSettings file="dev.config"/>
dev.config で:
<appSettings>
<add key="InDevMode" value="true" />
</appSettings>
live.config で:
<appSettings>
<add key="InDevMode" value="false" />
</appSettings>