You can't "keep the machine live" as such all you can do is try to make the system more resilient by not having a single point of failure. You can have both servers running in parallel (called
load balancing) which is used to improve performance and
failover onto one if one goes down. You might want to take a look at
http://technet.microsoft.com/en-us/library/cc779570(v=ws.10).aspx[
^]. You also need to consider
database replication assuming you have one, as this itself would constitue a single point of failure too.
From an ASP.NET standpoint you need to consider how you are storing ASP.NET session. One option on the load balancer side is to have sticky sessions, where a user continues to communicate with one server. Given your failover scenario, I wouldn't recommend it as the session would go down with the machine. The other option is to store the asp.net session in a common persistence store (typically a database), this comes with a performance cost and you now need to consider the database as a potential point of failure if you didn't before. The final thing is more of a gotcha, if you set up a failover environment you'll need each machine to have the same
machine key[
^].
Setting these environments up isn't a facile task, not something you could give detailed instructions for in an answer like this. That said it is possible for a single developer to do this with a bit of patience and effort. Even so this doesn't ensure the service is always up, it just mitigates risk