1

実稼働サーバー上の IE 10 で、ASP.NET/VB Web フォーム アプリケーション (.NET 2.0 を対象とする) の Response.WriteFile メソッドに (私が思うに) 問題があります。基本的に、このコードは配置されており、IE 10 まで長年にわたってうまく機能しています。現在、Visual Studio を介してローカルでテストすると問題なく動作しますが、運用サーバー (Server 2008 R2、IIS 7) では、ファイルをダウンロードできないというエラーが表示されます。強制すると、破損した PDF が表示されます。Crystal Reports X を使用して PDF を生成しています。この問題を調査するための適切な言葉遣いで私を助けてくれる人は誰でも、私の尽きることのない感謝を得るでしょう! あらゆる種類の IE 10 のすべての互換モードを試しました。Scott Hanselman に従って、App_Browsers フォルダー内のブラウザー定義ファイルを更新しました。http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx。まだ比較的初心者の開発者として、これが VS を介して IE 10 でどのように機能するかについて何が欠けているのかわかりませんが、本番環境に置くと機能しません。

問題のコード スニペットは次のとおりです。

    ...
    Response.ContentType = "application/pdf"
    Response.AddHeader("content-disposition", "attachment; filename=ThisReport_" & Server.UrlEncode(Me.ReportName.Text & "_" & Now.Month.ToString() & "_" & Now.Day.ToString() & "_" & Now.Year.ToString()) & ".pdf")

    Response.WriteFile(strFileName)
    ...

この問題を解決するために提供できるヘルプ、ガイダンス、または指示を事前に感謝します。アプリケーションの多くの場所にこれを散りばめているので、表示されるすべての場所で修正するよりも、ルートレベルの修正を見つける方が望ましいでしょう。残念ながら、現在、.NET 4.5 へのアップグレードはオプションではありません。

4

4 に答える 4

4

後で来るかもしれない他の誰かがそれから利益を得ることができる場合に備えて、私は自分の質問に答えています. 私が知る限り、ASP.NET 2.0 (または他のバージョンかどうかはわかりません) の応答オブジェクトに影響する IE 10 の変更があったことがわかりました。追加することで問題を解決できました...

    Response.ClearContent()
    Response.ClearHeaders()
    Response.Clear()
    Response.Buffer = True
    Response.ContentType = "application/pdf"
    Response.AddHeader("content-disposition", "attachment; filename=ThisReport_" & Server.UrlEncode(Me.ReportName.Text & "_" & Now.Month.ToString() & "_" & Now.Day.ToString() & "_" & Now.Year.ToString()) & ".pdf")
    Response.WriteFile(strFileName)        
    Response.End()

使ってみた

    Response.Flush()
    Response.Close()

私がそれをしたとき、PDFコンテンツの代わりにHTMLページが吐き出されていました. これで問題は解決しましたが、ASP.NET と IIS の内部の仕組みについてはまだ学ばなければならないことがたくさんあります。必要に応じて、これに自由に追加してください。

于 2013-03-26T01:41:14.930 に答える
0

私は同じ問題に直面していました。私はResponse.Close()を使用していましたが、それを「Response.End()」に置き換えただけでうまくいきました。

于 2013-08-19T11:23:09.307 に答える
0

ローカル マシンでは動作するが、PROD サーバーでは動作しないという同じ問題がありました。これにより、ローカル マシンが Microsoft から更新を取得した可能性があり、PROD サーバーが更新されていないと考えられました。モードですが、IE 10 であらゆる種類の奇妙なことが起きていました。

私は、2 年前に Microsoft によってリリースされたホット フィックスで製品サーバーを更新するように依頼しました。しかし、私のサーバーには 2.0 フレームワークが搭載されているので、フレームワーク 3.5 に移行してこの修正を適用するよう依頼しました。これでアプリは正常に機能し、ブラウザー モードを IE 10 互換モードに変更せずに使用できるようになりました。

ここに修正のリンクがあります

http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2600088&kbln=en-us

于 2013-06-10T21:00:34.500 に答える