2009-06-26 12 views
5

Windows Server 2003/IIS6上で動作しているASP.NETサイトが正常に動作しています。ASP.NETサイトをIIS7に移動するとページ出力にぎこちない文字が表示される

Windows Server 2008/IIS7に移動しましたが、aspxページの出力にばかばかしいテキストが含まれるようになりました。例えば

P

ページの大半は適切にレンダリングしますが、ちんぷんかんぷんは、こことそこにあります。 私はイベントログをチェックしましたが、何もありません。

ここで何が起こっているのでしょうか? これを修正するにはどうすればよいですか?

私は、ASPXコードで複数のServer.Execute文が含まれている場合、この問題が現れることに気づいた:

<% Server.Execute("/inc/top.inc"); %> 

<% Server.Execute("/inc/footer.inc"); %> 

上記の.incファイルはHTMLだけが含まれています。エラーが発生するには、ファイルの長さがかなり長くなっている必要があります。

<div class="logo"> 
    <a href="/"> 
    <img src="/logo.png" alt="logo" width="31" height="29" class="logoimg" /> 
    </a> 
</div> 
<div class="logo"> 
    <a href="/"> 
    <img src="/logo.png" alt="logo" width="31" height="29" class="logoimg" /> 
    </a> 
</div> 
<div class="logo"> 
    <a href="/"> 
    <img src="/logo.png" alt="logo" width="31" height="29" class="logoimg" /> 
    </a> 
</div> 
<div class="logo"> 
    <a href="/"> 
    <img src="/logo.png" alt="logo" width="31" height="29" class="logoimg" /> 
    </a> 
</div> 
<div class="logo"> 
    <a href="/"> 
    <img src="/logo.png" alt="logo" width="31" height="29" class="logoimg" /> 
    </a> 
</div> 
<div class="logo"> 
    <a href="/"> 
    <img src="/logo.png" alt="logo" width="31" height="29" class="logoimg" /> 
    </a> 
</div> 

また、ちんぷんかんぷんの文字が矛盾表示されます。ここで私がテストしてきたサンプルHTMLです。ページをCtrl + F5キーで押すと、不器用な文字が変更され、まったく表示されないことがあります。

+0

en-USよりも異なる言語/文化を使用していますか? –

+0

いいえ、私は培養または培養を設定していません。 – frankadelic

+0

複数のブラウザを試しましたか?あなたはそれを作り出している可能性のあるコードが何であるかをぎこちない人の立場から推測できますか? –

答えて

1

これは決して解決できませんでした。

有効だった唯一の解決策は、Server.Execute()の使用を排除することでした。

0

charsetパラメータを設定してみてください。

<% Page ContentType="text/html; charset=utf-8"%> 
+0

これで問題は解決されませんでした。 – frankadelic

0

これは少し刺すようですが、IISではパイプラインモードを「クラシック」に設定してみてください。

+0

コードはすでに「クラシック」パイプラインモードで実行されています。 – frankadelic

0

おそらく.incファイルのエンコーディングと異なるエンコーディングを送っています。

.aspx.incファイルのエンコードを確認し、content-typeヘッダーのcharsetパラメータがブラウザに送信されていることを確認します。

EDIT:サーバーがUTF-8を送信しているので、.incファイルをUTF-8に変換する必要があります。 Visual Studioでファイルを開き、[ファイル]をクリックし、[保存オプションの詳細設定、およびUnicode (UTF-8 without signature) - Codepage 65001を選択することを行うには

。 (リストの一番下の近く)

+0

メモ帳++でASPXファイルとINCファイルの両方を開いた。どちらもANSIとしてリストされていました。 – frankadelic

+0

ブラウザに送信されるコンテンツタイプは何ですか? (Check in Fiddler、http://www.fiddler2.com) – SLaks

+0

コンテンツタイプ:text/html; charset = utf-8 – frankadelic

1

http://forums.asp.net/p/329153/330330.aspxは、それはあなたが見ている同じ問題かしら、同様の問題についての議論が含まれています。ここでは、rox.scottの答えを抜粋しています。

Response.Typeなどの後にページの実行を転送すると、結果のResponseにはResponse.Typeとエンコードが初期ページによって設定されます。 - 2ページ目の文字と互換性がない可能性があります。 解決策:両方のページでレスポンスタイプとエンコードを正しく指定していることを確認してください。

これを試して動作することを確認しますか?

これでうまくいかない場合、http://msdn.microsoft.com/en-us/library/39d1w2xf.aspxにはさまざまな設定オプションの興味深い議論があり、サイト全体で一貫したエンコードを強制することができます。あなたはそれらのいくつかを試してみるとよいかもしれません。また、MSDNの記事ではなくContentTypeをディレクティブを使用しますが、しないこと、これをお勧めします。

<%@ Page RequestEncoding="utf-8" ResponseEncoding="utf-8" %> 

ことがContentTypeを調整と同等の結果を生成しますが、それはしようとするのは簡単だかどうかわかりません。

<globalization 
    requestEncoding="utf-8" 
    responseEncoding="utf-8" 
    fileEncoding="utf-8" 
    responseHeaderEncoding="utf-8" 
/> 
+0

ありがとうございますが、これは役に立ちません。フォーラムの投稿は2003年から行われたことに注意してください。私の問題はWindows Server 2008に固有です。 – frankadelic

+0

hmmm。問題についての前提をチェックしてみましょう。下のすべてが正確ですか? 1)問題はServer.Execute(メインページの内容ではない)のHTMLでのみ発生します。 2)インクルードファイルには、HTMLでぎこちない文字に置き換えられた非ASCII文字が含まれています 3)問題は断続的ではありません指定されたURLについて 4)メインページとINCファイルの両方のResponseEncodingをUTF8に設定しても問題は解決しない また、問題を単純な再現ケースに絞り込むこともできます(例:INCファイルの2つのServer.Executeそれぞれ1行のテキスト)。もしそうなら、あなたはコードを投稿できますか? –

+0

1)問題はレンダリングされたページ全体で発生します。 DOCTYPE宣言の最初の4文字はありません。 2)インクルードファイルには、標準ASCII文字が含まれています。私はページを更新するときに不器用な言葉が可変の場所に置かれます。 3)時々問題が消えます。私はページをリフレッシュし、おそらく5回のリフレッシュごとに、ページは大丈夫です。 4)私は両方のファイルをUTF-8として保存しようとしました。それは助けにはならない。 ...上記の.incコンテンツを投稿しました。 .incは問題が発生するのに十分な長さでなければならないことに注意してください。 1行の.incファイルでエラーは発生しません。 – frankadelic

1

また、あなたは、web.configファイル
におけるグローバル化の要素を確認することができますこれは、system.webセクションでなければなりません)、不器用なことが消えるかどうかを見てください。突然読み込み可能な場合は、少なくともエンコーディングの問題であることがわかります。

また、実際に何が得られているかを見るために、16進エディタで出力を調べることをお勧めします。それはまたあなたに見える場所を与えるかもしれません。 gzipエンコーディングやページ圧縮を無効にしてみてください。

+0

これは問題を解決しませんでした – frankadelic

+0

@ x2設定オプションは私のユーザーコントロールで私の問題を修正しました。すべてのファイルに対してBOMなしでUTF-8を使用するため、IISはそれを検出できませんでした。 – ckerth

1

ポップは、Firefoxの中で最初多分Windowsの-1252に(ページ・エンコーディングを切り替え、手動で試してみてください。

+0

また、ページで宣言されている定義済みのエンコーディングタイプもチェックしてください.XHTMLを宣言している場合は、IIS 7がtext/HTML(これはチェックしていません)ではなくXMLタイプとして正しく返される可能性がありますページのエンコーディングが通知されます。 –

1

これはエンコードとは関係ありません。これは、エラーメッセージを仮想ディレクトリと組み合わせて使用​​している場合、IISがエラーメッセージを処理する方法を知らないことです。私の推測では、マシン上のローカルデバッグでこのサイトを実行すると、エラーメッセージが正常に表示されます。もしそうなら、実際のエラーの位置を推測することができます。

-1

Windowsイベントビューアでは、おそらくエラーの本当の原因を見つけることができます。そうすれば、それを修正することができます。

残念ながら、サーバーへのRPD /物理アクセスが必要です。エラーを解決するだけです。エラーの原因は表示されません。

1

あなたが見ているのは、gzip圧縮された通常のエラーページです。しかし、サーバーがエラーページにリダイレクトされたときにgzip圧縮HTTPヘッダーが失われたため、ブラウザーは解凍することを知らせませんでした。圧縮を行っているカスタムモジュールがありますか? Response.Filterを設定していますか?

関連する問題