Here's another embeddable web console: a Boo interpreter. You enter some code, hit the Execute button and it compiles and runs the code. You get access to all of the assemblies in your app.
I use this to run short ad-hoc "queries" against a running web app, like:
- Is this thing in the cache?
print (context.Cache["pepe"] == null)
- Do I have all httpmodules correctly registered?
import System.Web
for s in context.ApplicationInstance.Container.ResolveAll(typeof(IHttpModule)):
print s
- Checking performance counters:
import System.Diagnostics
pc = PerformanceCounterCategory("ASP.NET")
for counter in pc.GetCounters():
print counter.CounterName, counter.NextValue()
- Or even running some NHibernate query (although I'd prefer using the NHibernate web console):
import NHibernate
sf = context.ApplicationInstance.Container.Resolve(typeof(ISessionFactory))
using s = sf.OpenSession():
users = s.CreateQuery("from User order by newid()").SetMaxResults(5).List()
for u in users:
print u.Id
Why Boo? Because it's pretty much the perfect .net scripting language to embed: small (this console with boo merged in is about 1.9MB), type inference, duck typing, low-ceremony syntax.
Setup:
Notes:
- Unlike booish, this console is stateless. Each http request creates a new interpreter, it doesn't remember anything you executed in previous requests.
- Since the code is compiled and run within the main AppDomain, this will leak memory. Not a big deal in a dev environment though. But putting this in a production site is pretty much suicidal.
- In case it isn't obvious: this is not meant to replace proper testing.
Code is here.
UPDATE: it's now also available on NuGet