As I hinted in the comments, I think I've got a bit sidetracked by a reverse proxy
thing. Correct me if I'm still way off.
Looking at the documentation, as far as I understand it, the only difference between public and private Prismic repo is an extra layer of security (read: API key) that you have to pass along with every request.
Prismic content is distributed through an API that can be configured as private. In private mode, the API requires the client application to authenticate itself to query, retrieve and display any content stored in a Prismic repository.

To prove my point of no proxy needed, I started off a new private repo in Prismic and put together a quick code pen that makes a simple request using angular-prismico as example. Of note here is the PrismicProvider
setup:
PrismicProvider.setApiEndpoint('https://my-instance.cdn.prismic.io/api/v2');
PrismicProvider.setAccessToken('my master key');
PrismicProvider.setClientId('some client id');
PrismicProvider.setClientSecret('some_secret');
(the pen has working credentials but it's a throwaway instance that I opened up for this answer so those will likely expire soon)
This brings us to my first suggestion:
use the Angular client library (either Angular2+ or AngularJs as you didn't specify your version). Only do this if you don't care about the api key leaking to public (it might be an option for internal website for example).
Suppose you want to keep the key secret
and this is probably your case. In this situation, a flow similar to my other SO answer will make sense. In short - you somehow authorise clients of your Angular SPA to your IIS-hosted app, and you use Prismic's .net client library to fulfill the requests from clients.
To answer your specific question: yes, implementing a proxy that calls from SPA to Prismic can be done. You could start with this somewhat official sample and build on.