Hi,
SQL Ce only supports one process accessing the database at a time, if more than one process or program try to access a sql ce database at the same time it results in that kind of error. If more than one IIS web site or IIS application is trying to use the same database it will cause this kind of error, or if some other program is trying to access it while IIS is using it, will also cause this kind of error.
I don't think it is caused by using a service like was it up since that just makes web requests to your site those requests should all be in the same process unless you have multiple IIS sites pointing to the same files, then each site may have its own process and that would cause this kind of error.
My advice is if you're using was it up then don't use the appkeepalive, just use was it up. The app keepalive runs on a background thread but its in the same process so that shouldn't be a problem, but I'd avoid using it if you have was it up.
If you haven't banned any ip addresses then you could comment out BannedIPBlockingHttpModule in the 2 places where it exists in web.config and that will eliminate an un-needed hit to the database for each request.
Hope that helps,
Joe