Hi,
I've been working on ASP.net site for about 12 years now, so am very familiar with the model and these sorts of challenges.
I'm guessing your application has a database (MSSQL or MySql likely?) that we could host a "locks" table on it. As a user goes in to edit a page, a lock is added to that table. Another user going into that page would be blocked if a lock record existed.
The lock would be removed either when a user saved their changes and exited the page, or abandoned the page. There is a complication here as, being browser-based, it's not possible to be 100% sure you can catch when a user leaves a page (sometimes, javascript events can be missed if the user just closes the browser window or performs a similar action). The admin page to manually release locks you recommend is one way of handling this. In addition, if problems do occur frequently with locks being left in, we could look at a real-time "heartbeat" on a page lock - so whenever a user has a page open, the database lock is refreshed every 30 seconds by a hidden timer on the page. Thus, any lock in the db older than 30 secs is essentially expired.
Much of this work could be done in a page base class and master page file, if you're using those features of ASP.net webforms, or an included view file in MVC.
I'd be happy to take this work on for you, and would only ask for payment once you have the code back and are happy with it. I'm UK based and an independant software agency.
Regards
Chris
PulseLab Ltd