2

私たちのアプリケーションでは、アプリケーションから PDF を取得する必要があり、IE9 [8 または 7] に表示する必要があります。アプリケーションは ASP.Net MVC 3 にあり、PDF ファイルは SSRS から来ており、ユーザー基準に基づいて SSRS は PDF を返します。タグでブラウザに表示されます。

Visual Studio 2010 でアプリケーションをデバッグ モードで実行し、IIS7.5 でホストされているアプリケーションを実行すると、問題なく動作します。しかし、デバッガーなしでアプリケーションにアクセスするとすぐに、PDF はレンダリングされず、オブジェクト タグに読み込まれず、Adobe AtiveX PDF Viewer も表示されません。

問題の原因を突き止めるために、IE9 開発者ツールバーからキャプチャされたネットワーク ログから、URL : http://myhostname/Home/GetProfile/11 Result : Aborted Type : Initiator : ActiveX Control Initialization が判明しました。

Chrome で同じアプリケーションにアクセスすると、Chrome は問題なく PDF をロードしますが、IE9 は PDF をロードできません。

以下はコードです。

基準ページ

    <body>
        <div>
            <form id ="frmReport" method="get" action='@Url.Action("Report","Home")' 
target="iReport">
            <input type="text" />
            <input type="submit" value="Click"/>
            </form>
            <iframe id="iReport" name="iReport"></iframe>
        </div>
    </body>

上記の iReport iframe では、オブジェクト タグを持つ結果 HTML が取得されます。

レポート ビューアーの HTML コード。

    <div id="reportContainer">
    @{string urlPDF = "http://myhostname" + @Url.Action("GetProfile", 
              "Home", new { Id = "11" });
      <object id = "pdfView" height="600px" width="100%" 
type='application/pdf' data='@urlPDF'>
      </object>}
    </div>

MVC アプリケーションのコード。

public FileStreamResult GetProfile(string Id)
{
    var contentDisposition = new ContentDisposition
    {
        FileName = "Profile.pdf",
        Inline = true
    };
    Response.AppendHeader("Content-Disposition", contentDisposition.ToString());
    byte[] bytes = ReportStore.GetProfileInByte(Id);
    MemoryStream ms = new MemoryStream(bytes);
    return new FileStreamResult(ms, MediaTypeNames.Application.Pdf);
}

FileStreamResult の代わりに FileContentResult を試しましたが、問題は同じです。

IE9の何が問題なのか知っている人はいますか? サーバーから応答されたリクエストに問題のないアプリケーションをトレースしましたが、IE9-PDF ActiveX がコンテンツのレンダリングを処理していません。

これだけでなく、数台のマシンで試してみたところ、結果は同じで残念でした. マシンには IE9 と Adob​​ePDFReder 9\10 があります。VS.Net Debugger ではどこでも動作していますが、デバッガーから出ると失敗し始めます。

ありがとう

4

0 に答える 0