4

サービスから投稿を受け取る MVC アクションを作成しました。私の問題は、サービスが間違ったエンコーディングでマルチパート データを投稿していることです。

例を挙げましょう:

  • サービスはフォーム フィールド "text" の "á" を投稿します。
  • (Wireshark を使用して)パケットに書き込まれたバイトが 225 であることを確認しました。これは、ISO-8859-1 の「á」の正しいバイトです。
  • 私はRequest.Form["text"]実際に奇妙な(異なる)文字を取得します。

これは、utf-8 エンコーディングを使用して文字列に変換するときに、.NET が値 225 を Unicode char に変換しようとしたことが原因であると考えていますが、225 は utf-8 に対して有効ではないため、できませんでした。

私の質問は次のとおりです。これらのバイトの解析を文字列にオーバーライドする方法はありますか?

4

1 に答える 1

1

HttpModule を追加して、Request オブジェクトの ContentEncoding プロパティを上書きしてみてください。これが機能するかどうかはわかりませんが。

Web.Config の GlobalizationSection でデフォルトのエンコーディングを設定することができます。この設定は RequestEncoding と呼ばれ、サービスの HTTP 要求に ContentType ヘッダーが含まれていない場合にのみ有効になります。http://msdn.microsoft.com/en-us/library/system.web.configuration.globalizationsection.requestencoding.aspxを参照してください。

さらに Web.config 内で使用して、上記の設定を特定のディレクトリ/MVC コントローラーのみに設定できます。

于 2012-07-25T04:35:02.300 に答える