C#部署数据库及IIS站点

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

一、前言

最近忙里偷闲,做了一个部署数据库及IIS网站站点的WPF应用程序工具。 

二、内容

此工具的目的是:

根据.sql文件在本机上部署数据库 在本机部署IIS站点,包括新建站点,新建应用程序池。只新建而不会对本机上原有的程序池或站点做修改操作

最终样式:(Check按钮的作用是防止与本机已有的站点或程序池有冲突)

C#,数据库,IIS

View:

 


<Window x:Class="AutoWebTool.MainWindow"
    xmlns="http://www.easck.com/winfx/2006/xaml/presentation"
    xmlns:x="http://www.easck.com/winfx/2006/xaml"
    xmlns:d="http://www.easck.com/expression/blend/2008"
    xmlns:mc="http://www.easck.com/markup-compatibility/2006"
    xmlns:i="http://www.easck.com/expression/2010/interactivity"
    xmlns:local="clr-namespace:AutoWebTool"
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="0.5*"/>
      <RowDefinition Height="0.5*"/>
      <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <GroupBox Header="DataBase Configuration" FontSize="15" BorderThickness="3" Margin="5,10" Grid.Row="0">
      <Grid>
        <Grid.RowDefinitions>
          <RowDefinition/>
          <RowDefinition/>
          <RowDefinition/>
          <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="65*"/>
          <ColumnDefinition Width="133*"/>
          <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Row="0" Grid.Column="0" Text="Server Address" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" Height="26" />
        <TextBlock Grid.Row="1" Grid.Column="0" Text="User" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" Height="26" />
        <TextBlock Grid.Row="2" Grid.Column="0" Text="Password" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" Height="26" />
        <TextBlock Grid.Row="3" Grid.Column="0" Text="Script Path" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" Height="26" />

        <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding ServerAddress, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
           HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15" Width="450" Height="32" />
        <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding User, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
           HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15" Width="450" Height="32" />
        <PasswordBox Grid.Row="2" Grid.Column="1" PasswordChar="*" local:PasswordBoxHelper.Password="{Binding Password, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
           HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15" Width="450" Height="32">
          <i:Interaction.Behaviors>
            <local:PasswordBoxBehavior />
          </i:Interaction.Behaviors>
        </PasswordBox>
        <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding SqlPath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
           HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15" Width="450" Height="32" />

        <Button Grid.Row="4" Grid.Column="2" Width="70" Height="25" Margin="0,0,10,0"
            HorizontalAlignment="Left" VerticalAlignment="Center" Content="Browse" Click="FilePathBrowse_Click"/>
      </Grid> 
    </GroupBox>
    <GroupBox Header="WebSite And Pool" FontSize="15" BorderThickness="3" Margin="5,10" Grid.Row="1">
      <Grid>
        <Grid.RowDefinitions>
          <RowDefinition/>
          <RowDefinition/>
          <RowDefinition/>
          <RowDefinition/>
          <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="65*"/>
          <ColumnDefinition Width="133*"/>
          <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Row="0" Grid.Column="0" Text="WebSite Name" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" Height="26" />
        <TextBlock Grid.Row="1" Grid.Column="0" Text="WebSite ID" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" Height="26" />
        <TextBlock Grid.Row="2" Grid.Column="0" Text="WebSite PhysicalPath" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" Height="26" />
        <TextBlock Grid.Row="3" Grid.Column="0" Text="WebSite Port" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" Height="26" />
        <TextBlock Grid.Row="4" Grid.Column="0" Text="Application Pool Name" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" Height="26"/>

        <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding WebSiteName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
           HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15" Width="450" Height="32" />
        <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding WebSiteID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
           HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15" Width="450" Height="32" />
        <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding PhysicalPath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
           HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15" Width="450" Height="32" />
        <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding WebSitePort, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
           HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15" Width="450" Height="32" />
        <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding PoolName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
           HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15" Width="450" Height="32" />

        <Button Grid.Row="0" Grid.Column="2" Width="70" Height="25" Margin="0,0,10,0"
            HorizontalAlignment="Left" VerticalAlignment="Center" Content="Check" Click="WebSiteNameCheck_Click"/>
        <Button Grid.Row="1" Grid.Column="2" Width="70" Height="25" Margin="0,0,10,0"
            HorizontalAlignment="Left" VerticalAlignment="Center" Content="Check" Click="WebSiteIDCheck_Click"/>
        <Button Grid.Row="2" Grid.Column="2" Width="70" Height="25" Margin="0,0,10,0"
            HorizontalAlignment="Left" VerticalAlignment="Center" Content="Browse" Click="PathBrowse_Click"/>
        <Button Grid.Row="3" Grid.Column="2" Width="70" Height="25" Margin="0,0,10,0"
            HorizontalAlignment="Left" VerticalAlignment="Center" Content="Check" Click="WebSitePortCheck_Click"/>
        <Button Grid.Row="4" Grid.Column="2" Width="70" Height="25" Margin="0,0,10,0"
            HorizontalAlignment="Left" VerticalAlignment="Center" Content="Check" Click="PoolNameCheck_Click"/>
      </Grid>
    </GroupBox>
    <StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="10">
      <Button Width="70" Height="25" Content="OK" Click="Deploy_Click"/>
      <Button Width="70" Height="25" Content="Cancel" Margin="10,0,0,0" Click="Close_Click"/>
    </StackPanel>
  </Grid>
</Window>