Ne mozes zabraniti da se kopira, ali mozes zabraniti da se izvrsava.
Pri pokretanju proveris koji je domain u pitanju sa Request.ServerVariables("REMOTE_ADDR") i ako nije taj koji treba da bude, samo ne pustis da ide dalje.
To sam ja uradio u nekim dllovima.
U jednom sam zabranio promenu imena fajla, upravo na ovaj princip.
Ali posto se sve moze crackovati, ne vredi ti ni to nesto preterano, pogotovo sto se programi pisani u .NETu lako mogu dekompajlirati, ali na nekom nivou, zastita radi.