Sometimes, within an iFrame, you may be accessing a different protocol than outside of an iFrame, https outside, vs. http within. Certain browsers have higher security when this happens, disallowing the rendering of the page inside the iFrame. In fact, in the IE9 browser settings, you may find a security setting that allows you to allow cross-server access. Set this to "enable" and you'll see the rendering show up. You can even access lower security IE9 browsers and see your rendering.
That's the workaround. It's not what you want to do if you're having multiple users access your site from the outside. To require them to all change their IE9 security settings would be a bad PR move. Thus the interwebs world has created some magical, mamby pampy, incantational, sleight of hand called P3P.
Add this to the top of the page that you are trying to access within the iFrame:
HttpContext.Current.Response.AddHeader("p3p", "CP=\IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT NOI DEV PSAi COM NAV OTR STP IND DEM CAO\")
Of course, I just copied and pasted a line of code from a VB.Net class, adding a header to the page. The concept is the same for whatever language you are using.
Google P3P for more information too.
Hope this works for you!
-Joe