Windows 2012 Hosting - MVC 6 and SQL 2014 BLOG

Tutorial and Articles about Windows Hosting, SQL Hosting, MVC Hosting, and Silverlight Hosting

Windows 2012 Hosting - Advantages of Windows Server Hosting

clock October 17, 2018 06:11 by author Kenny

One of the most popular types of server hosting is Windows. Windows hosting is simply a web hosting server that runs the Windows OS. At this time, the most recent Windows server platform is Windows 2012 Server. Like any type of software, there are various advantages and disadvantages for running this platform compared to other hosting options.


There are eight primary advantages for choosing Windows server hosting over others. These include:

◈ The .NET framework
◈ Development
◈ Ease of use
◈ Scalability
◈ ASP and dynamically database driven pages
◈ Front page extensions
◈ Access compatibility
◈ Updates

Windows hosting is the only option supporting Visual Basic or .NET programming. If this framework is necessary for a site Windows hosting is the way to go. Similarly, if Windows based applications are to be developed on a site or its essential to use Visual Interdev, then Windows based server hosting is the most viable option.

Those already familiar with the Windows operating system will have an easier time using a Windows based server. This is a tremendous attraction to beginners as they won’t have to learn a great deal of foreign information just to run their website.

As websites expand and grow over time, they need to become more scalable. This indicates a need for adapting to new and different platforms. Windows hosting is effortlessly compatible with programming features such as PHP and MySQL. Other hosting software may not run as well with Windows technologies such as Visual Basic and .net.

Windows hosting is much more compatible with popular scripting advancements such as Active Server Pages (ASP) and dynamically database driven pages. One of the most popular web page design programs is Microsoft Front Page. Since Microsoft creates both Windows and Front Page, having a Windows server host will ensure compatibility with Front Page extensions and other features.

Those websites planning to utilize Microsoft Access for database functionality will find Windows server hosting to be easy to use. There are many options available in Access so the integration between the two is helpful. Many choose the Windows server hosting over others for this compatibility.

Finally, Microsoft continually provides updates for Windows server software. The support and number of updates from Microsoft cannot be matched. This guarantees users will have bugs fixed quickly and patches created for improved performance and increased options.

Since Microsoft has created so many popular software technologies, Windows hosting servers run smooth and are 100% compatible with each other. Languages such as Visual Basic, .net, and ASP run terrific with Front Page and Access. The largest advantage of a Windows hosting server is compatibility with other technologies. In this area, Windows hosting is king.

Best Windows Server 2012 Hosting Recommendation provides our customers with Plesk Panel, one of the most popular and stable control panels for Windows hosting, as free. You could also see the latest .NET framework, a crazy amount of functionality as well as Large disk space, bandwidth, MSSQL databases and more. All those give people the convenience to build up a powerful site in Windows server 2008. We offers Windows hosting starts from $5/month only. We also guarantees 30 days money back and guarantee 99.9% uptime. If you need a reliable affordable Windows server 2008/2012/2016 Hosting, we should be your best choice.

Windows 2012 Hosting - Best Tricks for Windows Server 2012

clock August 21, 2018 09:48 by author Kenny

Efficient Use of Server Manager

Windows Server 2008 R2 in part already allowed administrators to manage the network with Server Manager. However, that was all fairly rudimentary. For example, Server Manager in Windows Server 2008 R2 could not install roles over the network, and the management of server roles was not very efficient. Windows Server 2012 is vastly improved. For example, in Windows Server 2012, you can install server roles and features over the network on other servers.

Microsoft has combined the wizards for installing server roles and features into a single wizard. This approach makes the process easier and faster because only a single install is necessary. Server Manager automatically groups installed server roles together with the appropriate servers. Server Manager lists management tools directly in the Tools menu, and you can even edit the Tools menu. To do this, open the Control Panel and look for System and Security | Administrative Tools . Server Manager shows all of the links in this area in the Tools menu. At this point, you can add more links, remove links, and even create a folder structure.

To use Server Manager in Windows Server 2012 to connect to more servers, just click on Manage and then Add Servers . In the window, you can then search for servers, so you can manage them in your local Server Manager. In this way, you also create your own groups of servers, which you can combine in Server Manager. You can then view event messages for these groups. Note that you can only install server roles and features if you have previously connected to the appropriate server.

NIC Teaming

Windows Server 2012 can combine up to 32 compatible network cards in teams without additional tools. During setup, you can select whether you want to use the individual adapters in the team as standby adapters to improve availability, or whether you want to combine the speed of the adapters to increase performance. You can only combine Ethernet connections in teams. Bluetooth and WLAN are not supported. Additionally, all network cards must be connected with the same speed.

To create a NIC team, launch Server Manager and click Local Server . By default, NIC Teaming is disabled. To enable the feature, click on the Disabled link. A new window will appear. Here, in the lower right area you can see which network adapters in the server are compatible with NIC teaming. To create a team, just right-click in the Adapters and Interfaces window and select Add to New Team .

The Properties link lets you define additional settings for your NIC team. Windows Server 2012 uses the MAC address of the primary NIC as the MAC address of the team. Core servers also support NIC teams. You can handle the setup either with Server Manager on another server, or you can use PowerShell. In PowerShell, you can use Get-NetAdapter to view the individual team adapter candidates and use Enable-NetAdapter or Disable-NetAdapter to enable or disable individual adapters.

All commandlets for managing NIC teams can be listed using Get-Command -Module NetLbfo . To create a new team, use the New-NetLbfoTeam <team name> <Network Interface Cards> commandlet. A list of comma-separated NICs is required here. Windows Server 2012 removes the IP binding from the physical network interface cards and binds them to the new virtual adapter which the wizard created for the team. You can view the status of the team in the Server Manager Local Server section by clicking on the Enabled link by NIC Teaming.

If the team and the associated adapters are shown as active , you can adjust the network settings for the team. To do this, open the adapter settings by entering ncpa.cpl on the welcome page. You can then see the new team. On Hyper-V hosts you can create multiple virtual switches on the basis of the various physical adapters and then create NIC teams within virtual servers. They use the individual virtual switches of the Hyper-V host as their basis.

Virtual Domain Controller – Cloning and Snapshots

In Windows Server 2012, Microsoft has optimized the use of virtual domain controllers.

In contrast to previous versions, snapshots and cloned domain controllers no longer pose a risk to the entire Active Directory. To virtualize and also clone your domain controllers optimally, at least the following conditions must be met:

The PDC emulator must be on a domain controller with Windows Server 2012. You cannot clone the PDC emulator; it must always be available during the cloning process.

The domain must already have at least two domain controllers with Windows Server 2012 because you can only clone the second. The first one provides the PDC emulator.

The virtualization solution must support this new technology (VM generation ID). Currently, this is only Hyper-V in Windows Server 2012.

To discover whether the virtualization solution you use supports the new VM generation ID, check out the Device Manager on a virtualized server with Windows Server 2012. The driver for system devices must be the Microsoft Hyper-V Generation Counter with the vmgencounter.sys driver file.

Before you clone a virtual domain controller, you need to run the commandlet on the server. This cmdlet checks whether there are applications on the virtual server that do not support cloning.

If the cmdlet discovers incompatible services, for example, the DHCP service or an antivirus scanner, a message appears telling you this.

The configuration for cloning is created in the DCCloneConfig.xml file. The sample file, SampleDCCloneConfig.xml , is located in C:\Windows\System32 .

After creating the DCCloneConfig.xml file, you can copy this to the folder with the Active Directory database, which is normally the C:\Windows\NTDS folder. You can only clone source domain controllers that are members of the Clonable domain controllers group in Active Directory. You also can only clone domain controllers that are not switched on. That is, you must shut down the appropriate domain controller before you can clone it.

Before adding the new domain controller to Active Directory, you must copy the DCCloneConfig.xml file customized by the cloning process from the source computer to the folder with the Active Directory database – that is, normally from the source computer to C:\Windows\NTDS on the target computer. Windows modifies the name of the file to show that a cloning process has taken place. Change the name back to DCCloneConfig.xml .

Next, you can either create a new virtual machine and use the copied hard drive, or you can import the exported server with the Hyper-V Manager or PowerShell. When you import, select the option Copy the virtual machine . When you start the domain controller, it parses the DCCloneConfig.xml file and prepares itself for the cloning. You will also receive a corresponding message when Windows starts up.

Modifying the Server Name, Server Manager View, and IE

Many of the tasks that are part of the basic server configuration can be handled directly in Server Manager. To do this, click on Local Server . In the middle panel you will see the different tasks and can launch the corresponding wizards by clicking on the links.

In the View menu, you can disable the Welcome Tile ; then, in Manage | Server Manager Properties enable the option Do not start Server Manager automatically at logon . Normally you need Internet Explorer to install drivers. In Windows Server 2012, advanced security is automatically enabled for Internet Explorer, which can interfere with downloading the drivers. You can disable advanced security for Internet Explorer in Server Manager as follows: Open Server Manager and on the left side, click Local Server . On the right side, click the On link next to IE Enhanced Security Configuration in the Properties section. In the dialog box that then appears, disable the option for Users or Administrators only.

After advanced security is disabled, you should be able to download drivers with no trouble.

Managing Windows Server 2012 with Windows 8

Microsoft provides the Remote Server Administration Tools (RSAT) to let administrators manage Windows Server 2012 with Windows 8. Installing the tools on a workstation with Windows 8 gives you all of the administration tools you need for managing Windows Server 2012.

In addition to the various management tools for the server roles, the RSAT installation wizard also adds the new Server Manager from Windows Server 2012 to Windows 8. Using Server Manager, you can connect the various servers on which Windows Server 2012 is installed to the network. You also can use Server Manager on a Windows 8 workstation to install server roles on servers.

The Remote Server Administration Tools for Windows 8 include Server Manager, management tools for server roles and features of Windows Server 2012, PowerShell cmdlets, and command-line tools for the management of roles and features. The Remote Server Administration Tools can be downloaded as a .msu file directly in the Download Center. To use Server Manager in Windows Server 2012 and Windows 8 to connect to more servers, click on Manage and then Add Server . In the window, you can then search for servers and manage them in your local Server Manager.

Core Servers, Minimal Server Interface, GUI

Every installation of Windows Server 2012 has a Server Core as its basis. This provides all the essential command-line management tools, but it lacks all of the graphical management tools. You need to manage the server via some other server or with the Remote Server Administration Tools on Windows 8. During the installation, you can also opt to install Server Core mode. After the installation, you can easily install the management tools and the graphical interface on Windows Server 2012.

New in Windows Server 2012, besides the ability to install the graphical management tools on Server Cores, is the Minimal Server Interface. This installs the most important management tools for the graphical interface but is missing additional applications, such as Media Player, Explorer, and Internet Explorer. The desktop is also missing with this option. Many of the programs from the Control Panel and most of the administration tools for server roles and features, do work. The Minimal Server Interface is an intermediate stage between Server Core and servers with a graphical interface.

You can uninstall the graphical interface either in Server Manager or PowerShell. In Server Manager, use Manage | Remove Roles and Features . The Remove features page has a User Interfaces and Infrastructure field with three options:

Graphical Management Tools and Infrastructure – This refers to the management consoles of the most important graphical tools on the server. If only this feature is installed, and not the graphical shell for server and desktop experience features, you have a server with a Minimal Server Interface.

Desktop Experience – This feature is especially intended for Remote Desktop Servers. It converts the server interface into a Windows 8 interface and provides tools such as Media Player, Photo Manager, themes, and more.

Server Graphical Shell – You can disable this feature together with the desktop experience to use the Minimal Server Interface. Note that this also removes Explorer (formerly Windows Explorer) and Internet Explorer from the server. You can also use this feature in PowerShell with the command:

Uninstall-WindowsFeature Server-Gui-Shell

When you install a Core Server, the server is also missing the binaries for installing the graphical interface. You will need either to configure an Internet connection for the server for the installation so that you can download the required data from Windows Update, or you need to enter the folder with the Windows Server 2012 installation files.

You can perform the install on Server Cores with PowerShell using the command:

Install-WindowsFeature Server-Gui-Mgmt-Infra

or you can connect with the server using Server Manager on a server on the network. Use the following commands in PowerShell:

Import-Module Dism
Enable-WindowsOptionalFeature -online -Featurename ServerCore-FullServer,Server-Gui-Shell,Server-Gui-Mgmt

Alternatively, you can do:

Dism /online /enable-feature /featurename:ServerCore-FullServer /featurename:Server-Gui-Shell /featurename:Server-Gui-Mgmt

to install the graphical interface.

Backing Up Virtual Servers

Veeam, the well-known vendor of virtual server backup tools, offers a free tool that lets you parse the backup of virtual Exchange Servers and restore individual objects (single-item recovery). Normal servers can also be backed up and restored in the same way.

The basis for this tool is the Veeam Backup Free Edition product. The backup software lets you back up virtual servers without any downtime – and not just virtual Exchange servers. The software also supports VMware and Microsoft Hyper-V. With Veeam Backup Free Edition, you can even connect to System Center Virtual Machine Manager 2008 R2/2012 and integrate Hyper-V clusters. If you connect a SCVMM server to Veeam backup, the software can automatically scan all the attached servers and back up the virtual servers stored on them. The software not only backs up individual virtualization hosts but specializes in backing up the virtual servers.

Testing Replication in PowerShell

You can discover the status of Active Directory replication in PowerShell with the commandlet

Get-ADReplicationUpToDatenessVectorTable <servername>

or a list of all servers with:

Get-ADReplicationUpToDatenessVectorTable* | sort Partner,Server | ft Partner,Server,UsnFilter

To view the individual sites and the domain controllers at these sites, use these two commandlets:

Get-ADReplicationSite XE "Get-ADReplicationSite" -Filter * | ft NameGet-ADDomainController -Filter * | ft Hostname,Site

To view the replication connections in the PowerShell, use the command get-adreplicationconnection . Other interesting commandlets include:

Get-ADReplicationPartnerMetadata XE "Get-ADReplicationPartnerMetadata"
Get-ADReplicationFailure XE "Get-ADReplicationFailure"Get-ADReplicationQueueOperation

You can also view detailed information on the individual sites with

Get-ADReplicationSite -Filter *

in PowerShell.

Using Hyper-V Replication

Hyper-V replicas in Windows Server 2012 and Hyper-V Server 2012 let you replicate and synchronize virtual hard disks and complete virtual servers asynchronously between various Hyper-V hosts on the network. A cluster is not required. You can perform the replications manually, automatically, or on the basis of a schedule. If a Hyper-V host fails, the replicated servers can be switched online.

To make a Hyper-V host available for replicas, you will first need to enable and configure this option on the appropriate server in the Hyper-V Settings | Replication Configuration feature. Here, you define the data traffic and the servers from which the current server accepts replicas. Thus, you need to enable this feature first on all Hyper-V hosts.

If you are using Hyper-V Server 2012, you can also manage this server using the Hyper-V Manager on a different server and create the same settings in this way. There are no differences from the commercial editions of Windows Server 2012. Make sure you enable the Hyper-V Replica rule in the advanced firewall configuration (wf.msc ) named Hyper-V Replica HTTP Listener . There is also a listener for HTTPS.

If you want to replicate a virtual server on another Hyper-V host with Windows Server 2012 or Hyper-V Server 2012, then after configuring the host, right-click on the appropriate virtual server and select Enable Replication.

This step launches a wizard, in which you specify how to replicate the selected server from the source host to the target server. The virtual server on the source server will remain the same.

In the wizard, you also set the target server and the authentication type. What authentication the destination server accepts is defined on the target server in the Hyper-V settings (Replication Configuration ). You can also use the wizard to define which virtual hard drives you want to replicate. For the replication to work, you must enable the rules for the HTTP or HTTPS listener (depending on the traffic type you want to use) on the target server in the advanced settings of Windows Firewall (wf.msc ). The rules are already there, just not enabled.

Failover with Hyper-V Replicas

The advantage of Hyper-V replicas is that you can perform a failover in the event of a server failure. To do so, click on the corresponding virtual server that you have replicated in Hyper-V Manager and select Replication | Failover in the pop-up menu. You can also launch a scheduled failover. In this case, you start the failover from the server on which you operate the source VM.

Next, select the restore point at which you want to fail over and then launch the failover. This only works if the source VM is switched off. During the failover, the wizard will start the replicated server, which then becomes available via the network, just like the source VM.

The advantage of a planned failover of the source Hyper-V host is that Hyper-V can send changes that have not yet been replicated to the target server so that it has the latest version. After completing a planned failover, the old source VM then becomes the new target VM, and the old target VM becomes the new source VM for replication. This means that you can also reverse this process.

Configuring DHCP for Failover

DHCP failover in Windows Server 2012 allows the deployment of a fail-safe DHCP server structure without a cluster. DHCP failover supports two servers with IPv4 configurations. The servers can also be members of a workgroup; domain membership is not strictly necessary.

The DHCP failover feature lets you provide two DHCP server IP addresses and option configurations on the same subnet or in the same range. This information is replicated between the two DHCP servers. Configuring the failover to load-balancing, in which client requests are distributed to the two servers, is also possible.

Open the DHCP console on the DHCP server, right-click the DHCP realm in which you want the fail-safe, and then click Configure Failover . On the second page, enter the Partner Server and then click Next . You can also specify a common secret key for this failover relationship. You can also select the mode with which you want to use the fail-safe: either load balancing or hot standby. By default, Load Balance is selected. This means that two servers share the requests. After you have completed the setup, you can view the failover in the Failover tab of the IP range’s properties.

Providing iSCSI Targets via Virtual Hard Drives

Windows Server 2012 can do more than access iSCSI targets, it can also serve up virtual disks as iSCSI targets on the network. To do this, you must install the iSCSI Target Server role in Server Manager with Manage | Add Roles and Features | File and Storage Services | File and iSCSI Services .

After installing the role service, you can use Server Manager and select File and Storage Services | iSCSI to create virtual disks that can be configured as iSCSI targets on the network. With the wizard, and as anywhere in Server Manager, you can also create virtual iSCSI targets on other servers on the network. For this to work, the iSCSI Target Server role service must be installed on the corresponding server.

In the scope of this setup, you can define the size and the location of the VHD(x) file. Additionally, you can use the wizard to control which server on the network is allowed to access the iSCSI target. You can also use an iSCSI target to provide multiple virtual iSCSI disks. After creating the virtual disks, you can use the context menu to change the settings.

Best Windows Server 2012 Hosting Recommendation provides our customers with Plesk Panel, one of the most popular and stable control panels for Windows hosting, as free. You could also see the latest .NET framework, a crazy amount of functionality as well as Large disk space, bandwidth, MSSQL databases and more. All those give people the convenience to build up a powerful site in Windows server 2008. We offers Windows hosting starts from $5/month only. We also guarantees 30 days money back and guarantee 99.9% uptime. If you need a reliable affordable Windows server 2008/2012/2016 Hosting, we should be your best choice.

Windows 2012 Hosting - Top 6 Features in Windows Server 2019

clock July 31, 2018 08:47 by author Kenny

A preview of Windows Server 2019 adds features for hyperconvergence, management, security, containers and more.

Because Microsoft has shifted to a more gradual upgrade of Windows Server, many of the features that will become available with Windows Server 2019 have already been in use in live corporate networks, and here are half a dozen of the best.

Enterprise-grade hyperconverged infrastructure (HCI)

With the release of Windows Server 2019, Microsoft rolls up three years of updates for its HCI platform. That’s because the gradual upgrade schedule Microsoft now uses includes what it calls Semi-Annual Channel releases – incremental upgrades as they become available. Then every couple of years it creates a major release called the Long-Term Servicing Channel (LTSC) version that includes the upgrades from the preceding Semi-Annual Channel releases.

The LTSC Windows Server 2019 is due out this fall, and is now available to members of Microsoft’s Insider program.

While the fundamental components of HCI (compute, storage and networking) have been improved with the Semi-Annual Channel releases, for organizations building datacenters and high-scale software defined platforms, Windows Server 2019 is a significant release for the software-defined datacenter.

With the latest release, HCI is provided on top of a set of components that are bundled in with the server license. This means a backbone of servers running HyperV to enable dynamic increase or decrease of capacity for workloads without downtime.

GUI for Windows Server 2019

A surprise for many enterprises that started to roll-out the Semi-Annual Channel versins of Windows Server 2016 was the lack of a GUI for those releases. The Semi-Annual Channel releases only supported ServerCore (and Nano) GUI-less configurations. With the LTSC release of Windows Server 2019, IT Pros will once again get their desktop GUI of Windows Server in addition to the GUI-less ServerCore and Nano releases.

Project Honolulu

With the release of Windows Server 2019, Microsoft will formally release their Project Honolulu server management tool. Project Honolulu is a central console that allows IT pros to easily manage GUI and GUI-less Windows 2019, 2016 and 2012R2 servers in their environments.

Early adopters have found the simplicity of management that Project Honolulu provides by rolling up common tasks such as performance monitoring (PerfMon), server configuration and settings tasks, and the management of Windows Services that run on server systems. This makes these tasks easier for administrators to manage on a mix of servers in their environment.

Improvements in security

Microsoft has continued to include built-in security functionality to help organizations address an "expect breach" model of security management. Rather than assuming firewalls along the perimeter of an enterprise will prevent any and all security compromises, Windows Server 2019 assumes servers and applications within the core of a datacenter have already been compromised.

Windows Server 2019 includes Windows Defender Advanced Threat Protection (ATP) that assess common vectors for security breaches, and automatically blocks and alerts about potential malicious attacks. Users of Windows 10 have received many of the Windows Defender ATP features over the past few months. Including Windows Defender ATP on Windows Server 2019 lets them take advantage of data storage, network transport and security-integrity components to prevent compromises on Windows Server 2019 systems.

Smaller, more efficient containers

Organizations are rapidly minimizing the footprint and overhead of their IT operations and eliminating more bloated servers with thinner and more efficient containers. Windows Insiders have benefited by achieving higher density of compute to improve overall application operations with no additional expenditure in hardware server systems or expansion of hardware capacity.

Windows Server 2019 has a smaller, leaner ServerCore image that cuts virtual machine overhead by 50-80 percent. When an organization can get the same (or more) functionality in a significantly smaller image, the organization is able to lower costs and improve efficiencies in IT investments.

Windows subsystem on Linux

A decade ago, one would rarely say Microsoft and Linux in the same breath as complimentary platform services, but that has changed. Windows Server 2016 has open support for Linux instances as virtual machines, and the new Windows Server 2019 release makes huge headway by including an entire subsystem optimized for the operation of Linux systems on Windows Server.

The Windows Subsystem for Linux extends basic virtual machine operation of Linux systems on Windows Server, and provides a deeper layer of integration for networking, native filesystem storage and security controls. It can enable encrypted Linux virtual instances. That’s exactly how Microsoft provided Shielded VMs for Windows in Windows Server 2016, but now native Shielded VMs for Linux on Windows Server 2019.

Enterprises have found the optimization of containers along with the ability to natively support Linux on Windows Server hosts can decrease costs by eliminating the need for two or three infrastructure platforms, and instead running them on Windows Server 2019.

Because most of the "new features" in Windows Server 2019 have been included in updates over the past couple years, these features are not earth-shattering surprises. However, it also means that the features in Windows Server 2019 that were part of Windows Server 2016 Semi-Annual Channel releases have been tried, tested, updated and proven already, so that when Windows Server 2019 ships, organizations don’t have to wait six to 12 months for a service pack of bug fixes.

This is a significant change that is helping organizations plan their adoption of Windows Server 2019 sooner than orgs may have adopted a major release platform in the past, and with significant improvements for enterprise datacenters in gaining the benefits of Windows Server 2019 to meet security, scalability, and optimized data center requirements so badly needed in today’s fast-paced environments.

Best Windows Server 2012 Hosting Recommendation provides our customers with Plesk Panel, one of the most popular and stable control panels for Windows hosting, as free. You could also see the latest .NET framework, a crazy amount of functionality as well as Large disk space, bandwidth, MSSQL databases and more. All those give people the convenience to build up a powerful site in Windows server 2008. We offers Windows hosting starts from $5/month only. We also guarantees 30 days money back and guarantee 99.9% uptime. If you need a reliable affordable Windows server 2008/2012/2016 Hosting, we should be your best choice.

Windows 2012 Hosting - Easy to Install Active Directory on Windows Server 2012

clock July 24, 2018 07:48 by author Kenny

This article will walk you through setting up the Active Directory Role on a Windows Server 2012. This article is intended to be used for those without an existing Active Directory Forest, it will not cover configuring a server to act as a Domain Controller for an existing Active Directory Forest.

Install Active Directory

  1. Open the Server Manager from the task bar.
  2. From the Server Manager Dashboard, select Add roles and features. This will launch the Roles and Features Wizard allowing for modifications to be performed on the Windows Server 2012 instance.
  3. Select Role-based or features-based installation from the Installation Type screen and click Next.
  4. The current server is selected by default. Click Next to proceed to the Server Roles tab.
  5. From the Server Roles page place a check mark in the check box next to Active Directory Domain Services. A notice will appear explaining additional roles services or features are also required to install domain services, click Add Features.
  6. Review and select optional features to install during the AD DS installation by placing a check in the box next to any desired features, and then click Next.
  7. Review the information on the AD DS tab and click Next.
  8. On the Confirm installation selections screen, review the installation and then click Install.

Start remote registry service

Before promoting the server to domain controller, the remote registry service must be started.

  1. Click Start > Control Panel.
  2. Under Services, right-click Remote Registry and open the Properties menu.
  3. From the *Startup type:** drop-down menu, select Automatic.
  4. Under Service Status, select Start.

The remote registry service will start.

Configure Active Directory

Once the AD DS role is installed the server will need to be configured for your domain.

  1. If you have not done so already, Open the Server Manager from the task bar.
  2. Open the Notifications Pane by selecting the Notifications icon from the top of the Server Manager. From the notification regarding configuring AD DS, click Promote this server to a domain controller.
  3. From the Deployment Configuration tab select Add a new forest from the radial options menu. Insert your root domain name into the Root domain name field, and then click Next.
  4. Select a Domain and Forest functional level, and then input a password for the Directory Services Restore Mode (DSRM) in the provided password fields. The DSRM password is used when booting the Domain Controller into recovery mode.
  5. Review the warning on the DNS Options tab and select Next.
  6. Confirm or enter a NetBIOS name and click Next.
  7. Specify the location of the Database, Log files, and SYSVOL folders and then click Next.
  8. Review the configuration options and click Next.
  9. The system checks to ensure all necessary prerequisites are installed on the system prior to moving forward. If the system passes these checks, proceed by clicking Install.

After the server reboots, reconnect to it via RDP. Congratulations on successfully installing and configuring a Active Directory Domain Services on Windows Server 2012.

Best Windows Server 2012 Hosting Recommendation provides our customers with Plesk Panel, one of the most popular and stable control panels for Windows hosting, as free. You could also see the latest .NET framework, a crazy amount of functionality as well as Large disk space, bandwidth, MSSQL databases and more. All those give people the convenience to build up a powerful site in Windows server 2008. We offers Windows hosting starts from $5/month only. We also guarantees 30 days money back and guarantee 99.9% uptime. If you need a reliable affordable Windows server 2008/2012/2016 Hosting, we should be your best choice.

Windows 2012 Hosting - Ensure Super Fast SSAS Tabular Models

clock July 17, 2018 13:00 by author Kenny

SQL Server Analysis Services (SSAS) Tabular is a popular choice as an analytical engine for many customers. With its state-of-the-art compression algorithms, multi-threaded query processor and in-memory capabilities, SSAS Tabular can provide super quick access to data by reporting client applications. However, as a consultant, we have been called by many clients to resolve slow query performance when accessing data from SSAS Tabular models. Our experiences have taught us most, if not all, of the performance issues can be resolved by taking care of the following five subject areas. 

Estimate Current Size and Growth Carefully

Tabular models compress data really well and on an average, you can expect to see 10x the compression rates (though it can be much more or less depending on the cardinality of your data). However, when you are estimating the size of your model as well as future growth, a rough figure like this is not going to be optimal. If you already have data sitting in a data warehouse, import a subset of that data — say a month — to find the model size for that and then extrapolate the value based on the required number of rows / years as well as the number of columns. If not, try to at least get a subset of the data from the source to find the model size. There are tools like BISM Memory Report and Vertipaq Analyzer that can further help in this process.
It is also important to record the number of users who will be accessing the system currently as well as the estimated growth for the number of users.

Select or Upgrade Hardware Appropriately

Everyone knows SSAS Tabular is a memory intensive application, and one major issue I have seen is only the RAM is considered when hardware selections are made. However, just focusing on the RAM is not enough and there are a lot of other variables. Suppose all the other variables are constant and there is an unlimited budget, these are the recommendations:

CPU Speed – The faster, the better, will help in computing results faster especially when there is a bottleneck on the single-threaded formula engine.

CPU Cores – In theory, the more the better as it helps in managing concurrent user loads. However, in reality, a rise in the number of cores usually corresponds to a decrease in the CPU speed due to management overload. So a balanced approach has to be taken when determining the CPU Cores and Speed. Also, licensing cost increases with the number of cores for many software.

CPU Sockets – The lesser, the better as SSAS Tabular is not NUMA aware till SQL 2014. However, this is expected to change in SQL 2016 where some NUMA optimization has been made. For large tabular models, it might be a challenge to go single socket as the amount of RAM that can be supported on a system will depend on the CPU sockets.

CPU Cache – The more, the better. Retrieving data from CPU caches are 10-100x faster than retrieving data from RAM.

CPU Architecture – The newer, the better due to the hardware performance optimizations. For eg, Intel Xeon processors with Haswell architecture is always going to be faster than Sandy architecture keeping all other variables constant.

Amount of RAM – Should have at least 2.5x the model size, if the model is going to be processed on the same server. The amount of RAM can be lesser in cases of certain scale out architectures where the model is processed in a separate server.

RAM Speed – The faster, the better (yes, RAMs have speed too!) This is very important for a memory-bound application like Tabular and should always go for the faster speeds, if budget allows.

Storage – Not important at all as it does not have any effect on query performance. However, if budget allows, it might not be a bad idea to get faster storage like SSDs, as that will help in maintenance related activities like backup, storage or even getting the tabular model online faster when the service is restarted. Apart from this, there are other factors also like network latency, server architecture (scale out), etc that have to be considered, but depending on the budget and specific customer requirements, a balanced approach will have to be made.

Design the Data Model Properly

Tabular is really good at performance and in the case of small models, is extremely forgiving in terms of bad design. However, when the amount of data grows, performance problems begin to show up. In theory, you will get the best performance in SSAS tabular if the entire data is flattened into a single table. However, in reality, this would translate to an extremely bad user experience as well as a lengthy and expensive ETL process. So the best practice is to have a star schema, generally. Also, it is recommended to only include the relevant columns from the source tables, as increasing the columns will result in an increase in model size which in turn will result in slower query performances. Increase in number of rows might still be ok as long as the cardinality of the columns don’t change much.
Depending on the specific customer requirements, there could be deviations from the best practices. For e.g., we built custom aggregate tables along with the detailed fact table in the case of a very large production model for a client. The resultant measure had a conditional statement to retrieve data from the aggregate table if the detailed level dimension data was not used in the report. Since the aggregate table was only 1/10 the size of the detailed fact table, the query came out 10x times faster whenever the details were not used, which was almost 90% of the times.

Optimize the DAX Calculations

In case of small models, Tabular is extremely forgiving in terms of bad DAX code also. However, just like in the case of bad design, performance takes a hit for the worse as you increase the data, add more users, or run complex queries. DAX performance tuning is the most difficult to tune from the current list, and it is important to have a strategy for maintaining and tuning the performance. A good place to start would be the Performance Tuning of Tabular models in SSAS 2012 whitepaper.

Monitor User Query Patterns and Train Users

Once your model is in production, it is important to keep monitoring the user query patterns as well as the resources to see potential bottlenecks. Through this, you can find whether the performance issues are being caused due to inefficient DAX, bad design, insufficient resources or most importantly, whether it is just because a user is using the model inefficiently. For e.g., in one of the cases, we found out the slow performance for all users was due to a single user dumping the entire 100 GB model into spreadsheets so he could perform custom calculations on top of it. This blocked the queries for all the other users and made things really slow for them. With appropriate requirement gatherings, we ensured all the required calculations for that user were there in the model and then trained the user to use the model for his analytics.

Best Windows Server 2012 Hosting Recommendation provides our customers with Plesk Panel, one of the most popular and stable control panels for Windows hosting, as free. You could also see the latest .NET framework, a crazy amount of functionality as well as Large disk space, bandwidth, MSSQL databases and more. All those give people the convenience to build up a powerful site in Windows server 2008. We offers Windows hosting starts from $5/month only. We also guarantees 30 days money back and guarantee 99.9% uptime. If you need a reliable affordable Windows server 2008/2012/2016 Hosting, we should be your best choice.

Windows Server Hosting - Configure DNS In Windows Server 2012 Step by Step Tutorial

clock July 10, 2018 12:01 by author Kenny

DNS (Domain Name System) carries a major role in any version of SharePoint in various scenarios / configuration levels, like:
– Alternate access mapping
– Configuring App model
– Configuring Active Directory Domain Services
Let us see the step by step approach to configure DNS in windows server 2012 for SharePoint 2013. Configuring DNS involves adding DNS role in server 2012. Below steps walk us through the same:
1. Open server manager by start -> Server Manager. Then click on Add roles and features. Then click on Next in the “Before You Begin” wizard. Then in the Installation Type select the default “Role-based or feature-based installation” radio button.
2. Select the desired server name to be configured the DNS in the list.

3. Then Click on Next, then in the Server Roles, select “DNS Server”. 

4. Click on check box to restart the server after the role configuration and click on Install to configure DNS.

Best Windows Server 2012 Hosting Recommendation provides our customers with Plesk Panel, one of the most popular and stable control panels for Windows hosting, as free. You could also see the latest .NET framework, a crazy amount of functionality as well as Large disk space, bandwidth, MSSQL databases and more. All those give people the convenience to build up a powerful site in Windows server 2008. We offers Windows hosting starts from $5/month only. We also guarantees 30 days money back and guarantee 99.9% uptime. If you need a reliable affordable Windows server 2008/2012/2016 Hosting, we should be your best choice.

ASP.NET Hosting - : Paging with ASP.NET Web API OData

clock October 20, 2015 08:58 by author Kenny

Paging with ASP.NET Web API OData

What is OData?

OData, short for Open Data Protocol, defines a protocol for the querying and updating of data utilizing existing Web protocols. OData is a REST-based protocol for querying and updating data and is built on standardized technologies such as HTTP, Atom/XML, and JSON. It is different from other REST-based web services in that it provides a uniform way to describe both the data and the data model. It is considered to be a flexible technology for enabling interoperability between disparate data sources, applications, services and clients.

Step by Step

When the API call returns the list of repositories in the body of the response as a JSON array:

    "id": 1234,
    "name": "",
    "full_name": "user/",
    "id": 1111,
    "name": "test",
    "full_name": "user/test",

It does not state the total number of records anywhere in the resulting JSON, not does it return the current page or the number of records per page which you requested. What it does however is to return the pagination information in the Link header of the request. So in the case of my API call above it returns the following Link header:

Link: <>; rel="next",
      <>; rel="last",
      <>; rel="first",
      <>; rel="prev"

So it allows you to request subsequent pages by requesting the URL in the Link header with the relation type (rel parameter value) of “next”. Also to get the total number of pages you will need to extract the page query parameter from the link with the relation type of last.

Best Windows Shared Hosting Recommendation provides our customers with Plesk Panel, one of the most popular and stable control panels for Windows hosting, as free. You could also see the latest .NET framework, a crazy amount of functionality as well as Large disk space, bandwidth, MSSQL databases and more. All those give people the convenience to build up a powerful site in Our Shared Hosting. We offers Windows hosting starts from $5/month only. We also guarantees 30 days money back and guarantee 99.9% uptime. If you need a reliable affordable Windows Shared Hosting, we should be your best choice.

ASP.NET Hosting - : Dynamically Create Meta Description Using ASP.NET

clock October 13, 2015 08:37 by author Kenny

Dynamically Create Meta Description Using ASP.NET

HTML “meta description” allows us to describe web pages with short and sometimes elaborated details. Descriptions written inside the <meta> tag, must always to specific and are often limited to very few characters. Using Asp.Net, we can easily create “meta” descriptions dynamically, through code behind procedures, describing the contents of the page.

We all know how important it is to use meta tags when you’re building an internet web site. Meta tags provide metadata about the HTML document. They are not rendered in the browser but are used by search engines to parse web pages. The following article demonstrates how to store meta tags for each page in an XML file and how to use LINQ to read the XML data and dynamically create meta tags for each page in your website.

Open Visual Studio 2008 and choose File > New > Web > ASP.NET Web Application.

Add a Master Page to the project. Once that is completed, add a Web Content Page and select the newly created Master Page as the Master Page.

The next step is to create a new folder in the web site to demonstrate all pages in the website will have dynamic meta tags at runtime. Right click the website and choose Add > New Folder. Name the new folder ChildFolder. After this add a new Web Content Page to this folder. Leave the default name as this is not important.

Now that we have two pages in different folders, it’s now time to create an XML file that contains the data for the meta tags. Right click the website and choose Add > New Item > XML File. Name the file TagData.xml and add the following XML:

 <tags pageName="/WebForm1.aspx">
    <tag name="keyword" value="This is a keyword"></tag>
    <tag name="description" value="This is a description"></tag>
    <tag name="author" value="malcolm sheridan"></tag>
 <tags pageName="/ChildFolder/WebForm1.aspx">
    <tag name="keyword" value="This is a keyword for the child pages"></tag>
    <tag name="description" value="This is a description for the child pages"></tag>
    <tag name="author" value="malcolm sheridan for this page too"></tag>

In the XML above I have created a parent node called metaTags. Inside I have created a tags node which contains a pageName attribute. That value is how we will match the current requested page to the XML data. Each tags node contains a tag node that corresponds to the meta data we want sent to the browser. In this example I want to set meta tags for the all the pages to have keyword, description and author meta tags, but the values rendered to the browser will differ depending on what page the user is on. In a real world scenario this information would be stored inside a database, but I decided to keep this data inside an XML file to keep it simple and focus on how to do this.

Having outlined what meta tags we want sent to the browser, we now have to write the code that will read the XML file and dynamically add the meta tags at runtime. Seeing as though we’re using Master Pages this is the ideal spot to add it. Add the following code to read the XML file:


XDocument doc = XDocument.Load(Server.MapPath("~/TagData.xml"));
var metaTags = doc.Descendants("tag")
              .Where(o => o.Parent.Attribute("pageName").Value == Request.Url.AbsolutePath)
               .Select(o => new
                    Value = o.Attribute("value").Value,
                    Name = o.Attribute("name").Value


Dim doc As XDocument = XDocument.Load(Server.MapPath("~/TagData.xml"))
Dim metaTags = doc.Descendants("tag").Where(Function(o) o.Parent.Attribute("pageName").Value = Request.Url.AbsolutePath).Select(Function(o) New With {Key .Value = o.Attribute("value").Value, Key .Name = o.Attribute("name").Value})

For flexibility and ease of use I have decided to use the power of LINQ to XML to read the XML data. To start with the XML document is load into an XDocument object. From there I have created a LINQ query to return all the tag nodes where the parent node has an attribute called pageName and the value is equal to the current page.   Then the object returned is an anonymous type that has a Value and Name property. The values of those properties are the value and name attribute values.

Now that we have the data in memory, the next step is to create the meta tag and add it to the page dynamically. To do this you use the HtmlMeta class. This allows you programmatic access to the HTML meta tags. Add the following code below to your project:


foreach (var item in metaTags)
     HtmlMeta meta = new HtmlMeta();
     meta.Name = item.Name;
     meta.Content = item.Value;


For Each item In metaTags
       Dim meta As New HtmlMeta()
       meta.Name = item.Name
       meta.Content = item.Value
Next item

The foreach loop enumerates through each item returned from the LINQ query. It assigns the Name and Content value to the HtmlMeta object. Finally the object is added to the page by calling Page.Header.Controls.Add(meta). Run the project and once the default page has loaded, view the HTML source and you’ll see the meta tags have been added to the website.


Browsing to the second page and viewing the HTML source, you’ll find the meta tags have been added to the page but they’re different values from the previous page.

Best Windows Shared Hosting Recommendation provides our customers with Plesk Panel, one of the most popular and stable control panels for Windows hosting, as free. You could also see the latest .NET framework, a crazy amount of functionality as well as Large disk space, bandwidth, MSSQL databases and more. All those give people the convenience to build up a powerful site in Our Shared Hosting. We offers Windows hosting starts from $5/month only. We also guarantees 30 days money back and guarantee 99.9% uptime. If you need a reliable affordable Windows Shared Hosting, we should be your best choice.

ASP.NET 5 Hosting - ASPHostPortal :: How To Configuration in ASP.NET 5

clock September 21, 2015 11:33 by author Kenny

How To Configuration in ASP.NET 5

Goodbye XML, Hello JSON

In the past, ASP.NET has been built on a foundation of XML. Web Forms .aspx and .ascx files are basically XML files and configuration in previous versions of ASP.NET is managed in an XML file called web.config. The web.config file has a particular structure and a class (System.Web.Configuration.WebConfigurationManager) devoted to providing access to it. In ASP.NET 5 JSON is the preferred format for storing structured information such as configuration. This change has largely been driven, I suspect, by the desire to appeal to web developers working on other platforms who are more used to JSON as a structured data format. The first article in this series has already looked at the new JSON solution and project files: global.json and project.json.

The default replacement for the web.config file is config.json. You can also choose to use an XML file if you prefer, and INI files, environment variables, command line arguments and an in-memory option are supported natively too. The template for a config.json file is labelled as ASP.NET Configuration File in the Add New Item dialog:

When you add one, the templated content provides a placeholder for a connection string:

    "Data": {
        "DefaultConnection": {
            "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=_CHANGE_ME;Trusted_Connection=True;"

Strongly Typed AppSettings

In earlier versions of ASP.NET, it is quite common to store application-wide constants in the appSettings section of a web.config file. You can store these values in the config.json file instead. Previous Beta release templates included an example of this, but it has been removed from the Beta 6 template. The steps described below demonstrate how to use the config.json file to store appsettings and how to provide strongly-typed access to them.

Add the highlighted code to the config.json file:

    "AppSettings" : {
        "SiteTitle" :  "My Web Site"
    "Data": {
        "DefaultConnection": {
            "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=_CHANGE_ME;Trusted_Connection=True;"

Right click on the Properties node in Solution Explorer (depicted by a wrench icon) and select Add » New Item.

Add a C# class file named AppSettings.cs and replace its default content with the following:

namespace WebApplication2
    public class AppSettings
        public string SiteTitle { get; set; }

Change the dependencies section in project.json to include the highlighted lines below

  "dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta6",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta6",
    "Microsoft.AspNet.Mvc": "6.0.0-beta6",
    "Microsoft.Framework.Configuration.Json": "1.0.0-beta6"

Make the following highlighted changes to Startup.cs:

using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Http;
using Microsoft.Framework.Configuration;
using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.OptionsModel;
using Microsoft.Framework.Runtime;

namespace WebApplication2
    public class Startup
        public IConfiguration Configuration { get; set; }

        public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
            var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
            Configuration = builder.Build();
        public void ConfigureServices(IServiceCollection services)

        public void Configure(IApplicationBuilder app)
            var appSettings = app.ApplicationServices.GetService<IOptions<AppSettings>>();
            app.Run(async (context) =>
                await context.Response.WriteAsync(appSettings.Options.SiteTitle);

Press Ctrl+F5 to run the application without debugging. You should see "My Web Site" written to the browser.

You started by adding a new section called AppSettings to the config.json file and declaring a property with a value. Then you created a C# class called AppSettings with one property that matches the one you added to the config file. The AppSettings class is designed to provide strongly typed access to the appSettings section of the config.json file. You added a couple of packages to the project.json file to make them available to the application. The first package enables you to use JSON as the format for your configuration data. The second package introduces MVC into the application.

In the Startup class, you added a constructor where you instantiated a variable representing the project's configuration as the config.json file and assigned that to a property that you created of type IConfiguration. This holds the values loaded from the configuration source (the config.json file). You made the AppSettings available to the application by registering it with the dependency injection system in the ConfigureServices method. The method you used mapped the json values from the configuration file to the AppSettings class. You also registered the MVC framework with the dependency injection system. Finally, you used the GetService<T> extension method to retrieve the AppSettings from the DI system in the Startup class'sConfigure method where you used them to write the SiteTitle value to the browser.

Best Windows Shared Hosting Recommendation provides our customers with Plesk Panel, one of the most popular and stable control panels for Windows hosting, as free. You could also see the latest .NET framework, a crazy amount of functionality as well as Large disk space, bandwidth, MSSQL databases and more. All those give people the convenience to build up a powerful site in Our Shared Hosting. We offers Windows hosting starts from $5/month only. We also guarantees 30 days money back and guarantee 99.9% uptime. If you need a reliable affordable Windows Shared Hosting, we should be your best choice.

ASP.NET MVC 6 Hosting - ASPHostPortal :: Bootstrap Tree View in ASP.Net MVC

clock August 24, 2015 07:42 by author Kenny

Bootstrap Tree View in ASP.Net MVC

The ASP.NET MVC is an almost open source web application framework that implements the model–view–controller (MVC) pattern. The ASP.NET MVC framework is a lightweight, highly testable presentation framework that (as with Web Forms-based applications) is integrated with existing ASP.NETfeatures, such as master pages and membership-based authentication. Bootstrap is the most popular HTML, CSS, and JavaScript framework for developing responsive, mobile-first web sites.

We create two classes, one is AuthorViewModel and another is BookViewModel. AuthorViewModel is the main class that has an association with the BookViewModel class. In other words each AuthorViewModel class object has a list of BookViewModel class objects. The following is the code snippet for the BookViewModel class. 

namespace TreeView.Models   
    public class BookViewModel   
        public long Id   
        public string Title   
        public bool IsWritten   

The following is the code snippet for the AuthorViewModel class.

using System.Collections.Generic;  
namespace TreeView.Models {  
    public class AuthorViewModel   
        public AuthorViewModel()   
            BookViewModel = new List < BookViewModel > ();  
        public int Id   
        public string Name   
        public bool IsAuthor   
        public IList < BookViewModel > BookViewModel   

Now we create a controller “HomeController” that has two action methods for both GET and POST requests. The action method's name is “Index”. The Get request action method returns a tree view in the UI whereas the POST request method gets the posted data from the UI. The following is the code snippet for HomeController.

using System.Collections.Generic;  
using System.Linq;  
using System.Web.Mvc;  
using TreeView.Models;  
namespace TreeView.Controllers  
    public class HomeController : Controller  
        public ActionResult Index()  
            List<AuthorViewModel> model = new List<AuthorViewModel>();  
            AuthorViewModel firstAuthor = new AuthorViewModel  
                Id = 1,  
                Name = "User1",  
                BookViewModel = new List<BookViewModel>{  
                    new BookViewModel{  
                        Title = "JQuery",  
                        IsWritten = false  
                    }, new BookViewModel{  
                        Title = "JavaScript",  
                        IsWritten = false  
            AuthorViewModel secondAuthor = new AuthorViewModel  
                Id = 2,  
                Name = "User2",  
                BookViewModel = new List<BookViewModel>{  
                    new BookViewModel{  
                        Title = "C#",  
                        IsWritten = false  
                    }, new BookViewModel{  
                        Title = "Entity Framework",  
                        IsWritten = false  
            return View("Index", model);  
        public ActionResult Index(List<AuthorViewModel> model)  
            List<AuthorViewModel> selectedAuthors = model.Where(a => a.IsAuthor).ToList();  
            List<BookViewModel> selectedBooks = model.Where(a => a.IsAuthor)  
                                                .SelectMany(a => a.BookViewModel.Where(b => b.IsWritten)).ToList();  
            return View();  

The preceding code shows how books are associated with an author in the GET action method and how to get a selected tree node (authors and books) in the POST request. 

Bootstrap CSS is already added to the application but we write a new custom CSS for the tree view design. The following is the code snippet for the tree CSS.

.tree li {  
    margin: 0px 0;    
    list-style-type: none;  
    position: relative;  
    padding: 20px 5px 0px 5px;  
.tree li::before{  
    content: '';  
    position: absolute;   
    top: 0;  
    width: 1px;   
    height: 100%;  
    right: auto;   
    left: -20px;  
    border-left: 1px solid #ccc;  
    bottom: 50px;  
.tree li::after{  
    content: '';  
    position: absolute;   
    top: 30px;   
    width: 25px;   
    height: 20px;  
    right: auto;   
    left: -20px;  
    border-top: 1px solid #ccc;  
.tree li a{  
    display: inline-block;  
    border: 1px solid #ccc;  
    padding: 5px 10px;  
    text-decoration: none;  
    color: #666;      
    font-family: 'Open Sans',sans-serif;  
    font-size: 14px;  
    font-weight :600;  
    border-radius: 5px;  
    -webkit-border-radius: 5px;  
    -moz-border-radius: 5px;  
/*Remove connectors before root*/  
.tree > ul > li::before, .tree > ul > li::after{  
    border: 0;  
/*Remove connectors after last child*/  
.tree li:last-child::before{   
      height: 30px;  
/*Time for some hover effects*/  
/*We will apply the hover effect the the lineage of the element also*/  
.tree li a:hover, .tree li a:hover+ul li a {  
    background: #dd4814; color: #ffffff; border: 1px solid #dd4814;  
/*Connector styles on hover*/  
.tree li a:hover+ul li::after,   
.tree li a:hover+ul li::before,   
.tree li a:hover+ul::before,   
.tree li a:hover+ul ul::before{  
    border-color:  #dd4814;  
    margin :4px !important;  
.tree:before {  
    border-left:  1px solid #ccc;  
    bottom: 16px;  
    content: "";  
    display: block;  
    left: 0;  
    position: absolute;  
    top: -21px;  
    width: 1px;  
    z-index: 1;  
.tree ul:after {  
    border-top: 1px solid #ccc;  
    content: "";  
    height: 20px;  
    left: -29px;  
    position: absolute;  
    right: auto;  
    top: 37px;  
    width: 34px;  
*:before, *:after {  
    box-sizing: border-box;  
*:before, *:after {  
    box-sizing: border-box;  
.tree {  
    overflow: auto;  
    padding-left: 0px;  
    position: relative;  

Now we create an Index view that renders in the browser and shows the tree view for the author and book. The following is the code snippet for the Index view.

@model List  
@section head{  
    <div class="panel panel-primary">  
        <div class="panel-heading panel-head">Author Book Tree View</div>  
        <div id="frm-author" class="panel-body">  
@using (Html.BeginForm())  
            <div class="tree">  
@for (int i = 0; i < Model.Count(); i++)  
                        <a href="#">  
@Html.CheckBoxFor(model => model[i].IsAuthor, new { @class = "tree-checkbox parent", @id = @Model[i].Id })  
                            <label for=@i>  
@Html.DisplayFor(model => model[i].Name)  
@for (int j = 0; j < Model[i].BookViewModel.Count(); j++)  
int k = 1 + j;  
@Html.HiddenFor(model => model[i].BookViewModel[j].Id)  
                                <a href="#">  
@Html.CheckBoxFor(model => model[i].BookViewModel[j].IsWritten, new { @class = "tree-checkbox node-item", @iid = i + "" + j })  
                                    <label for=@i@j>  
                                        <strong>Book @(k):</strong> @Html.DisplayFor(model => model[i].BookViewModel[j].Title)  
            <div class="form-group">  
                <div class="col-lg-9"></div>  
                <div class="col-lg-3">  
                    <button class="btn btn-success" id="btnSubmit" type="submit">  
@section scripts{  

Thereafter we create an important part of this example. We create the JavaScript file tree.js with the following code.

    function Tree() {  
        var $this = this;  
        function treeNodeClick()   
            $(document).on('click', '.tree li a input[type="checkbox"]', function() {  
                $(this).closest('li').find('ul input[type="checkbox"]').prop('checked', $(this).is(':checked'));  
            }).on('click', '.node-item', function() {  
                var parentNode = $(this).parents('.tree ul');  
                if ($(this).is(':checked')) {  
                    parentNode.find('li a .parent').prop('checked', true);  
                } else {  
                    var elements = parentNode.find('ul input[type="checkbox"]:checked');  
                    if (elements.length == 0) {  
                        parentNode.find('li a .parent').prop('checked', false);  
        $this.init = function() {  
    $(function() {  
        var self = new Tree();  

As in the preceding JavaScript code, the create tree view has the following features.

  1. When we select an author parent node then all the associated books will be selected.
  2. When a book is selected the associated parent author will be selected automatically.
  3. When all child book nodes are selected for a parent author node then the parent node will be selected.
  4. When the parent node is unselected then the child books will be automatically unselected.

Figure 1 shows the parent child (author-book) tree view.


We’re a company that works differently to most. Value is what we output and help our customers achieve, not how much money we put in the bank. It’s not because we are altruistic. It’s based on an even simpler principle. "Do good things, and good things will come to you".

Success for us is something that is continually experienced, not something that is reached. For us it is all about the experience – more than the journey. Life is a continual experience. We see the Internet as being an incredible amplifier to the experience of life for all of us. It can help humanity come together to explode in knowledge exploration and discussion. It is continual enlightenment of new ideas, experiences, and passions

 photo ahp banner aspnet-01_zps87l92lcl.png

Author Link

Corporate Address (Location)

170 W 56th Street, Suite 121
New York, NY 10019
United States

Sign in