У меня есть приложение ASP.NET MVC, которое должно извлекать определенные метаданные из файлов изображений. Я в настоящее время с помощью Windows API Code Pack, чтобы сделать это следующим образом:Сбой приложения при получении метаданных, содержащих символ Юникода, с помощью пакета кода Windows API
var imageShellObject = ShellObject.FromParsingName(filePath);
var title = imageShellObject.Properties.System.Title;
Локально, на моем компьютере, это работает отлично: он получает строку, содержащую свойство название файла, как и ожидалось. Однако при развертывании на веб-сервере w3wp.exe падает, когда достигает второй строки кода, если свойство, которое он пытается получить, содержит символ Юникода, такой как LINE SEPARATOR (U + 2028) или LATIN SMALL LETTER THORN (U + 00FE). У меня нет возможности поймать исключение, поэтому я не могу определить, в чем проблема, и хуже того, я не могу терпеть неудачу: процесс IIS просто сбой немедленно. На сервере, это всплывает стандартный Visual Studio Just-In-Time Debugger диалогового о том,
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.
Ошибка Вход в Windows не показывает никаких подробностей об ошибке либо, он просто отображает количество ошибок приложений происходит в w3wp.exe для модулей propsys.dll, combase.dll и KERNELBASE.DLL.
Странно, что если я запустил приложение локально, он отлично работает с использованием того же файла. У меня создается впечатление, что на сервере отсутствуют некоторые связанные с Unicode вещи, но я не могу себе представить, почему, поскольку просмотр свойств файла в проводнике на сервере отображает эти символы в Юникоде, просто отлично.
Что здесь происходит?