C#部署数据库及IIS站点

2019-12-30 19:33:14于海丽

View的后台文件:


using System.Windows;
using System.Windows.Controls;
using System.Windows.Interactivity;

namespace AutoWebTool
{
  /// <summary>
  /// MainWindow.xaml 的交互逻辑
  /// </summary>
  public partial class MainWindow : Window
  {
    private AutoGenerationVM _vm;

    public MainWindow()
    {
      InitializeComponent();
      DataContext = new AutoGenerationVM();
      _vm = DataContext as AutoGenerationVM;
    }

    private bool sqlPath;
    private void FilePathBrowse_Click(object sender, RoutedEventArgs e)
    {
      sqlPath = _vm.GetSqlFilePath();
    }


    private void WebSiteNameCheck_Click(object sender, RoutedEventArgs e)
    {
      var isInUse = _vm.CheckNameAndID();
      if (isInUse)
      {
        MessageBox.Show("1.This name is Empty rn2.This name is in use,please change name!");
      }
      else
      {
        MessageBox.Show("No Problem!");
      }
    }

    private void WebSiteIDCheck_Click(object sender, RoutedEventArgs e)
    {
      var isInUse = _vm.CheckNameAndID();
      if (isInUse)
      {
        MessageBox.Show("1.This ID is Empty rn2.This ID is in use,please change ID!");
      }
      else
      {
        MessageBox.Show("No Problem!");
      }
    }

    private bool physicalPath;
    private void PathBrowse_Click(object sender, RoutedEventArgs e)
    {
      physicalPath = _vm.GetFolderPath();
    }
    private void WebSitePortCheck_Click(object sender, RoutedEventArgs e)
    {
      var isInUse = _vm.CheckWebPort();
      if (isInUse)
      {
        MessageBox.Show("1.This port is Empty rn2.This port is in use,please change port!");
      }
      else
      {
        MessageBox.Show("No Problem!");
      }
    }
    private void PoolNameCheck_Click(object sender, RoutedEventArgs e)
    {
      var isInUse = _vm.CkeckPoolName();
      if (isInUse)
      {
        MessageBox.Show("1.This pool name is Empty rn2.This name is in use,please change name!");
      }
      else
      {
        MessageBox.Show("No Problem!");
      }
    }

    private void Deploy_Click(object sender, RoutedEventArgs e)
    {
      var dataBaseServerAddressChecked = string.IsNullOrEmpty(_vm.ServerAddress);
      var dataBaseUserChecked = string.IsNullOrEmpty(_vm.User);
      var dataBasePasswordChecked = string.IsNullOrEmpty(_vm.Password);
      var dataBaseScriptChecked = sqlPath;
      var dataBaseCondition = !dataBaseServerAddressChecked && !dataBaseUserChecked && !dataBasePasswordChecked && !dataBaseScriptChecked;

      var webSiteNameAndIDChecked = _vm.CheckNameAndID();
      var webSitePortChecked = _vm.CheckWebPort();
      var applicationPoolNameChecked = _vm.CkeckPoolName();
      var webSiteCondition = !webSiteNameAndIDChecked && !physicalPath && !webSitePortChecked && !applicationPoolNameChecked;

      if (dataBaseCondition&& webSiteCondition)
      {
        _vm.Execute();
      }
      else {
        MessageBox.Show("Please Check Your Input!");
      }
    }

    private void Close_Click(object sender, RoutedEventArgs e)
    {
      Close();
    }
  }

  public static class PasswordBoxHelper
  {
    public static readonly DependencyProperty PasswordProperty =
      DependencyProperty.RegisterAttached("Password",
      typeof(string), typeof(PasswordBoxHelper),
      new FrameworkPropertyMetadata(string.Empty, OnPasswordPropertyChanged));

    private static void OnPasswordPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
    {
      var passwordBox = sender as PasswordBox;

      string password = (string)e.NewValue;

      if (passwordBox != null && passwordBox.Password != password)
      {
        passwordBox.Password = password;
      }
    }

    public static string GetPassword(DependencyObject dp)
    {
      return (string)dp.GetValue(PasswordProperty);
    }

    public static void SetPassword(DependencyObject dp, string value)
    {
      dp.SetValue(PasswordProperty, value);
    }
  }

  public class PasswordBoxBehavior : Behavior<PasswordBox>
  {
    protected override void OnAttached()
    {
      base.OnAttached();

      AssociatedObject.PasswordChanged += OnPasswordChanged;
    }

    private static void OnPasswordChanged(object sender, RoutedEventArgs e)
    {
      var passwordBox = sender as PasswordBox;

      string password = PasswordBoxHelper.GetPassword(passwordBox);

      if (passwordBox != null && passwordBox.Password != password)
      {
        PasswordBoxHelper.SetPassword(passwordBox, passwordBox.Password);
      }
    }

    protected override void OnDetaching()
    {
      base.OnDetaching();

      AssociatedObject.PasswordChanged -= OnPasswordChanged;
    }
  }
}