This doesn't work because RewritePath is not designed to send a request to a different application. You say that it 'mostly works', but in reality it is not doing what you think, and is handling the rewritten request in the same application. This is why the ~ is not resolving to the sub app.
There are lots of things that won't work either. e.g.
- if you have a global.asax under your obw folder, it will be ignored
- you won't be able to load assemblies that come from obw/bin
In other words, in the context of RewritePath it's just treating obw as a plain subfolder and not as anything special.
As an alternative, you could consider using the IIS URL Rewriter module, which won't have this issue.