Ensures app domain restarted after db upgrade to clear PetaPoco's mapping cache.

This commit is contained in:
Shannon
2014-01-20 10:36:37 +11:00
parent 7e32fdb682
commit 4842be01cd
2 changed files with 15 additions and 9 deletions

View File

@@ -1,6 +1,7 @@
using System;
using System.Configuration;
using System.Security.Authentication;
using System.Web;
using System.Web.Script.Serialization;
using System.Web.Script.Services;
using System.Web.Services;
@@ -97,6 +98,11 @@ namespace Umbraco.Web.UI.Install
HandleConnectionStrings();
//After upgrading we must restart the app pool - the reason is because PetaPoco caches a lot of the mapping logic
// and after we upgrade a db, some of the mapping needs to be updated so we restart the app pool to clear it's cache or
// else we can end up with YSODs
ApplicationContext.Current.RestartApplicationPool(new HttpContextWrapper(HttpContext.Current));
var js = new JavaScriptSerializer();
var jsonResult = js.Serialize(result);
return jsonResult;

View File

@@ -161,10 +161,10 @@ namespace Umbraco.Web.UI.Install.Steps
DatabasePassword.Text = GetConnectionStringValue(connectionStringBuilder, "password");
if (string.IsNullOrEmpty(DatabasePassword.Text)) DatabasePassword.Text = GetConnectionStringValue(connectionStringBuilder, "pwd");
toggleVisible(DatabaseServerItem, !ManualConnectionString && !IsEmbeddedDatabase);
toggleVisible(DatabaseUsernameItem, !ManualConnectionString && !IsEmbeddedDatabase);
toggleVisible(DatabasePasswordItem, !ManualConnectionString && !IsEmbeddedDatabase);
toggleVisible(DatabaseNameItem, !ManualConnectionString && !IsEmbeddedDatabase);
ToggleVisible(DatabaseServerItem, !ManualConnectionString && !IsEmbeddedDatabase);
ToggleVisible(DatabaseUsernameItem, !ManualConnectionString && !IsEmbeddedDatabase);
ToggleVisible(DatabasePasswordItem, !ManualConnectionString && !IsEmbeddedDatabase);
ToggleVisible(DatabaseNameItem, !ManualConnectionString && !IsEmbeddedDatabase);
if (IsNewInstall || IsEmbeddedDatabase)
dbinit.Text = "$('#databaseOptionEmbedded').click();$('#databaseOptionEmbedded').change();";
@@ -243,15 +243,15 @@ namespace Umbraco.Web.UI.Install.Steps
/// <param name="e">The event arguments.</param>
protected void DatabaseType_SelectedIndexChanged(object sender, EventArgs e)
{
toggleVisible(DatabaseServerItem, !ManualConnectionString && !IsEmbeddedDatabase);
toggleVisible(DatabaseUsernameItem, !ManualConnectionString && !IsEmbeddedDatabase);
toggleVisible(DatabasePasswordItem, !ManualConnectionString && !IsEmbeddedDatabase);
toggleVisible(DatabaseNameItem, !ManualConnectionString && !IsEmbeddedDatabase);
ToggleVisible(DatabaseServerItem, !ManualConnectionString && !IsEmbeddedDatabase);
ToggleVisible(DatabaseUsernameItem, !ManualConnectionString && !IsEmbeddedDatabase);
ToggleVisible(DatabasePasswordItem, !ManualConnectionString && !IsEmbeddedDatabase);
ToggleVisible(DatabaseNameItem, !ManualConnectionString && !IsEmbeddedDatabase);
//toggleVisible(DatabaseConnectionString, ManualConnectionString);
}
private static void toggleVisible(HtmlGenericControl div, bool visible)
private static void ToggleVisible(HtmlGenericControl div, bool visible)
{
if (!visible)
div.Attributes["style"] = "display: none;";