我尝试使用以下函数来确定 MP3 文件的长度:
public static string GetMP3DurationBackup(string Filename)
{
string Duration = null;
WMPLib.WindowsMediaPlayer w = new WMPLib.WindowsMediaPlayer();
WMPLib.IWMPMedia m = w.newMedia(Filename);
if (m != null)
{
Duration = m.durationString;
}
w.close();
return Duration;
}
我遇到了一个问题,我收到以下错误:
由于以下错误,检索具有 CLSID {6BF52A52-394A-11D3-B153-00C04F79FAA6} 的组件的 COM 类工厂失败:80040154..
当我从我的 Web 应用程序调用上述函数时(如下调用):
string test = MediaUtil.GetMP3DurationBackup(@"C:\Temp\Audio\bad.mp3");
但是当我从我创建的控制台应用程序测试工具中调用它时(与上面的调用完全相同),它工作正常。我已在 Build 属性中将包含该函数的项目设置为以 x86 为目标,但这并没有解决问题。
有谁知道为什么会发生这种情况?关于从哪里开始调试的建议?
更新赏金:
好的,我已经尝试了很多方法,但仍然出现此错误。除其他外,我尝试了以下我认为最有希望的步骤,但没有骰子:
- 进入我的注册表并确认值:
HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{6BF52A52-394A-11d3-B153-00C04F79FAA6}\InprocServer32
是指C:\WINDOWS\SysWOW64\wmp.dll
- 打开命令提示符,导航到 C:\WINDOWS\SysWow64,运行:
regsvr32.exe wmp.dll
我已经创建了一个控制台应用程序测试工具,如果我在 x64 中运行测试项目,我能够重现该错误。如果我将它切换到 x86,它工作正常。
有谁知道为什么上述不能解决问题?关于下一步看哪里的建议?