2009-05-19 20 views
4

よく知られているWebホスティングプロバイダの共有サーバー上で実行されているASP.NET 2.0 Webアプリケーションがあります。時折、私はこのようなエラーが発生しているようです:XmlSerializerがC: Windows Temp *。dllファイルを見つけられない

ファイル 'C:\ WINDOWS \ TEMP \ lxnmfrsz.dll'が見つかりませんでした。 説明:現在のWeb要求の実行中に、未処理の例外が発生しました。エラーの詳細とコード内のどこで発生したのかについては、スタックトレースを参照してください。

例外の詳細:System.IO.FileNotFoundException: 'C:\ WINDOWS \ TEMP \ lxnmfrsz.dll'ファイルが見つかりませんでした。

私は検索しましたが、これは一般的な問題であると思われます。 1つの解決策は、一時フォルダーをクリアするかIISを再起動することです。私は所有していないサーバー上でこれらのものにアクセスすることができないので、それらは実際にはオプションではありません。 web.configのディレクティブを使用してtempディレクトリを別のディレクトリに設定しようとしましたが、それでもデフォルトのtempディレクトリを使用しているようです。私は一時ディレクトリを変更したり、この問題を解決するために他の方法がありますか?

+0

ホスティングプロバイダに連絡してみましたか? –

+0

はい、私はそれらに連絡しました。彼らは私はいくつかの特別なASP.NET一時フォルダを使用する必要があると述べた。それは私がweb.configディレクティブを使ってフォルダを設定したと思ったときですが、まだ動作していません。 –

答えて

7

常に同じタイプをシリアル化する場合は、pre-generating XmlSerializer binaries using sgen.exeを試してみてください。その場合、XmlSerializerはそれらを検索しません。

+0

これはおそらく最良のオプションです...さらに、シリアライゼーションアセンブリを生成する必要がないため、パフォーマンスが改善されます –

+0

かなりの間この問題は発生しませんでしたが、問題は常に.NETフレームワーク内で発生します私自身のアセンブリではなく、アセンブリです。私はホスティングの問題だと信じています。彼らはウェブアプリケーションを別のサーバに移動して戻って問題を解決しました。私はそれが多くのWebアプリケーションを持つ共有サーバーでアプリケーションプールの問題に過ぎないのだろうかと思います。 –

0

ここで唯一の注意点は、ジェネリックが含まれている場合(たとえば、ご使用のタイプのList <>)、sgenを使用してシリアライザアセンブリを事前生成することはできないようです。

この問題を回避するには、自分のタイプのリスト< MyType>から派生させて、これを事前生成されたアセンブリに含めます。

関連する問題