私の開発マシンでは正常に動作している MVC4 WebApi プロジェクトがありますが、デプロイされたサーバーでは奇妙な動作をしています。どちらのボックスも IIS 7.5 を搭載した Server 2008 です
複雑な型をパラメーターとして受け取る単一の Post メソッドを持つ単一のコントローラーがあります。強制的にXmlMediaType
フォーマッタなどを使用しXmlSerialization
て
HttpConfiguration.Formatters.XmlFormatter.UseXmlSerializer = true
おり、複合型は「オールドスクール」XmlSerializable
です。
同じリクエストに対して、開発ボックスは本文の XML を複合型のインスタンスに正しく逆シリアル化し、メソッドからクライアントに返される結果Post
は正しいです。他のマシンでは、パラメーター インスタンスがメソッドnull
に到着しPost
ます。
これは同一のコードであり、同一の要求であることを繰り返します (ホスト名を除く)。それは、マシン間で環境的に異なる何かがなければならないと私に思わせます. 残念ながら、多くの検索を行った後でも、それが何であるかはまだわかりません。
Post
また、メソッドを変更して文字列パラメーターを受け取り、内部で逆シリアル化を行う場合、両方のボックスでの動作は同じで正しいことも指摘しておく必要があります。
カスタム シリアライザー ( ) も実装しましたが、ここでも開発XmlFormatter.SetSerializer
ボックスが機能します。もう 1 つはnull
パラメーターを生成します。興味深いことに、この場合、逆シリアル化の前にリクエストの本文をログに記録すると、両方のマシンで同じ XML が表示されます。Post
1 つのボックスが、デシリアライズされた値をメソッドの途中のどこかにドロップするだけです。
この奇妙な動作のトラブルシューティングを進める方法について、誰か提案を提供できますか?