アドオンをインストールできる Web アプリケーションがあります。これらのアドオンを作成するには、同じ構造を持つ新しい Web アプリケーションを作成し、メイン アプリケーションからアセンブリを参照します。
この後、aspx (マークアップ) ファイルをメイン アプリケーションにのみコピーします。これにより、マークアップ ページとアセンブリへの参照が作成され、デバッグできるようになります。
これは、私が修正を加えるまではすべて正常に機能していました。最後に作業してから変更されたのは、VS2010 SP1 のインストールだけです。
コードにポイントがあります-外部コードとしてどこで発生しているのか正確にはわかりませんが、セッションIDが変更されており、セッション内のすべてが失われています。
レポートを含む新しいウィンドウを開くコードがあります。
string link = String.Format( "window.open('{0}');", Page.ResolveUrl( "~/CustomPages/BudgetOnlineMedia.aspx" ) );
Page.ClientScript.RegisterStartupScript( this.GetType(), "MedReport", link, true );
この後、ベース ページでブレークポイントにヒットします。
/// <summary>
/// OnPreload
/// </summary>
/// <param name="e">args</param>
[VersionChange( "7.3.88.272", "13/04/2011", "Fully qualified path to login page" )]
protected override void OnPreLoad( EventArgs e )
{
try
{
base.OnPreLoad( e );
if ( base.CurrentUser == null )
{
Response.Redirect( "~/Pages/Login.aspx", false );
}
}
catch ( Exception ex )
{
ErrorLogging.LogError( ex );
}
}
同じブレークポイントが再びヒットしますが、今回は SessionID が変更されました!
この時点でコールスタックを読み取ることができますが、私のコードにはセッションを変更するものは何もありません。
スタック トレースは次のようになります。
> Web.WAP.Objects.DLL!Web.WAP.Objects.Controls.UserPresencePage.OnPreLoad(System.EventArgs e) Line 28 C#
System.Web.dll!System.Web.UI.Page.ProcessRequestMain(bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint) + 0x22b bytes
System.Web.dll!System.Web.UI.Page.ProcessRequest(bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint) + 0x84 bytes
System.Web.dll!System.Web.UI.Page.ProcessRequest() + 0x51 bytes
System.Web.dll!System.Web.UI.Page.ProcessRequestWithNoAssert(System.Web.HttpContext context) + 0x16 bytes
System.Web.dll!System.Web.UI.Page.ProcessRequest(System.Web.HttpContext context) + 0x32 bytes
App_Web_-ti4sydr.dll!ASP.custompages_budgetexhibition_aspx.ProcessRequest(System.Web.HttpContext context) + 0x33 bytes C#
System.Web.dll!System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() + 0xb6 bytes
System.Web.dll!System.Web.HttpApplication.ExecuteStep(System.Web.HttpApplication.IExecutionStep step, ref bool completedSynchronously) + 0x4c bytes
System.Web.dll!System.Web.HttpApplication.ApplicationStepManager.ResumeSteps(System.Exception error) + 0x133 bytes
System.Web.dll!System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(System.Web.HttpContext context, System.AsyncCallback cb, object extraData) + 0x7c bytes
System.Web.dll!System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest wr) + 0x17c bytes
System.Web.dll!System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest wr) + 0x63 bytes
System.Web.dll!System.Web.HttpRuntime.ProcessRequest(System.Web.HttpWorkerRequest wr) + 0x47 bytes
WebDev.WebHost20.dll!Microsoft.VisualStudio.WebHost.Request.Process() + 0x177 bytes
WebDev.WebHost20.dll!Microsoft.VisualStudio.WebHost.Host.ProcessRequest(Microsoft.VisualStudio.WebHost.Connection conn) + 0x6c bytes
[Appdomain Transition]
WebDev.WebHost20.dll!Microsoft.VisualStudio.WebHost.Server.OnSocketAccept(object acceptedSocket) + 0xd3 bytes
mscorlib.dll!System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(object state) + 0x2f bytes
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x6f bytes
mscorlib.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(System.Threading._ThreadPoolWaitCallback tpWaitCallBack) + 0x53 bytes
mscorlib.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(object state) + 0x59 bytes
【アプリドメイン移行】とは?
セッション ID を変更する原因が何かわかりますか!?
編集:
わかりました、これは VS SP1 ではなく IE10 プレビューに関連している可能性があります。
今、window.ShowModalDialog を実行すると、そのダイアログから window.open. Internet Explorer が新しいセッションを作成します