イメージファイルから特定のメタデータを抽出する必要があるASP.NET MVCアプリケーションがあります。私は現在、次のようにこれを行うには、Windows APIコードパックを使用しています:Windows APIコードパックでユニコード文字を含むメタデータを取得するとアプリケーションがクラッシュする
var imageShellObject = ShellObject.FromParsingName(filePath);
var title = imageShellObject.Properties.System.Title;
局所的には、私のPC上で、これは正常に動作します:期待どおりに、ファイルのTitleプロパティを含む文字列を取得します。しかし、Webサーバーにデプロイされたとき、w3wp.exeは、2番目のコード行に到達するとクラッシュし、取得しようとしているプロパティにLINE SEPARATOR(U + 2028)やLATIN SMALL LETTER THORN(U + 00FE )。私は例外をキャッチする方法がないので、問題が何であるかを判断することはできません。さらに悪いことに、正常に失敗することはありません。IISプロセスはただちにクラッシュします。サーバーでは、これは、Windowsのエラーログのいずれかのエラーについての詳細は示していない、それだけで発生したアプリケーションエラーの数が表示され
An unhandled win32 exception occurred in w3wp.exe [3708]. Just-In-Time debugging this exception failed with the following error: No installed debugger has Just-In-Time debugging enabled. In Visual Studio, Just-In-Time debugging can be enabled from Tools/Options/Debugging/Just-In-Time. Check the documentation index for 'Just-in-time debugging, errors' for more information.
を述べ、標準のVisual Studioジャストインタイムデバッガーダイアログをポップアップ表示しますモジュールpropsys.dll、combase.dll、およびKERNELBASE.DLLのw3wp.exeにあります。
私はアプリケーションをローカルで実行すると、同じファイルを使用してうまく動作するということです。私は、サーバーにUnicodeに関連するものがいくつか見当たらないという印象を受けますが、なぜサーバー上のエクスプローラでファイルプロパティを調べると、ユニコード文字がうまく表示されるのか分かりません。
ここでは何が起こっていますか?