我有一个需要从图像文件中提取某些元数据的ASP.NET MVC应用程序。我目前使用Windows API代码包要做到这一点,如下所示:当通过Windows API获取包含unicode字符的元数据时,应用程序崩溃
var imageShellObject = ShellObject.FromParsingName(filePath);
var title = imageShellObject.Properties.System.Title;
本地,在我的电脑,这工作得很好:它会包含文件的标题属性的字符串,符合市场预期。但是,当部署到Web服务器时,w3wp.exe在到达第二行代码时崩溃,如果它试图获取的属性包含像LINE SEPARATOR(U + 2028)或LATIN SMALL LETTER THORN(U + 00FE)这样的Unicode字符)。我无法捕捉异常,所以我无法确定问题是什么,更糟的是,我无法优雅地失败:IIS进程立即崩溃。在服务器上,这会弹出标准的Visual Studio刚刚在实时调试对话框,说明
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相关的东西,但我无法想象为什么在服务器上的资源管理器中查看文件属性显示这些Unicode字符就好了。
这是怎么回事?