无法加载 DLL“Msacm32.dll”:找不到指定的模块

无法加载 DLL“Msacm32.dll”:找不到指定的模块

我想补充一下这个问题。
以前,当我运行运行旧版 Windows 2016 Server DC 的旧 DC 服务器时,这个功能是可以正常工作的。
一旦我们丢失了该 DC,然后硬盘驱动器故障导致备份 DC 和整个 Web Forest 都瘫痪,我们就无法让这个网站正常运行。
所以,过去行之有效现在,无论微软做了什么,不起作用

错误

无法加载 DLL“Msacm32.dll”:找不到指定的模块。
(来自 HRESULT 的异常:0x8007007E)

描述:执行当前 Web 请求时发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中起源的更多信息。

异常详细信息:System.DllNotFoundException:无法加载 DLL
“Msacm32.dll”:找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)

这是堆栈跟踪:

[DllNotFoundException:无法加载 DLL“Msacm32.dll”:找不到指定的模块。 (来自 HRESULT 的异常:0x8007007E)]
NAudio.Wave.Compression.AcmInterop.acmFormatSuggest2(IntPtr hAcmDriver、IntPtr sourceFormatPointer、IntPtr destFormatPointer、Int32 sizeDestFormat、AcmFormatSuggestFlags suggestFlags)+0
NAudio.Wave.Compression.AcmStream.SuggestPcmFormat(WaveFormat compressedFormat)+108
NAudio.Wave.AcmMp3FrameDecompressor..ctor(WaveFormat sourceFormat)+38 NAudio.Wave.Mp3FileReader.CreateAcmFrameDecompressor(WaveFormat mp3Format)+25 NAudio.Wave.Mp3FileReader..ctor(Stream inputStream、FrameDecompressorBuilder frameDecompressorBuilder、Boolean ownInputStream) +838 NAudio.Wave.Mp3FileReader..ctor(String mp3FileName) +83
TagLib._Default.UploadMultipleFiles(Object sender, EventArgs e) 位于 G:\Inetpub\wwwroot\website.com\Media\Default.aspx.vb:94
System.Web.UI.Control.OnLoad(EventArgs e) +95
System.Web.UI.Control.LoadRecursive() +59
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678

它引用文件 NAudio.dll
,因此,我使用以下命令在每个核心服务器上注册了此文件。

windows\microsoft.net\framework\v2.0.50727\regasm     
G:\InetPub\wwwroot\website.com\Media\Bin\NAudio.dll

然而,我尝试将其添加到全局缓存中。它显示它没有强名称。

"Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools"
gacutil -i G:\InetPub\wwwroot\website.com\Media\Bin\NAudio.dll

我重新启动了每个 IIS 实例,但仍然收到上述错误。

完成所有这些后,
我搜索了 Msacm32.dll,它不在
我检查过的桌面体验中的任何 Window 2016 CORE 服务器中,而是在 system32 和 syswow64 文件夹中。
我将文件复制到当前处于活动状态的服务器核心并尝试注册它。syswow64
>REGSVR32 /i Msacm32.dll
它说它不是有效的 dll 或 ocx 文件。

我不记得以前这个文件出现过这个问题,这是我第一次看到有关这个文件出现这个错误。

我试图回忆过去是否安装了某些东西,可能会将该文件添加到 CORE 服务器,但我不记得必须这样做。
我知道我刚刚注册了 MP3 音频文件,但从未在 CORE 服务器上对 Microsoft 音频文件进行任何操作。

更新
我将文件复制到所有核心服务器的 syswow64 文件夹中。
现在,我收到以下错误。

尝试加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B)描述:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中起源的更多信息。

异常详细信息:System.BadImageFormatException:尝试加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B)

所以,这让我知道我移动了错误版本的文件,这是件好事。(我认为)。所以,我将尝试复制另一个较小版本的文件,看看会发生什么。
我会发布我的发现。

下次更新
使用较小的文件进行更新,但出现此错误。

NoDriver calling acmFormatSuggest
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: NAudio.MmException: NoDriver calling acmFormatSuggest 

任何有关这方面的帮助都将不胜感激
。EE

答案1

好的。
这是我发现的。
我目前使用的 NAudio 组件不再受 Windows 2016 Server Core(不带桌面体验)的支持。而且 2016 Server Core 不具备桌面体验功能,我也不想将其添加到核心服务器中。

NAudio 组件的开发人员在他的网站上有关于此错误和问题的所有信息。
NoDriver 调用 acmFormatSuggest 使用 NAudio 播放 MP3

我正在寻找另一种获取 MP3 元数据的解决方案,例如我也用于元数据
的 TagLib
(NAudio 严格用于文件持续时间,因为它返回了正确的数据,而 TagLib 没有。TagLib 的作者正在研究它。)。

我希望上述信息能帮助其他可能遇到同样问题的人。如果您在 Server 2016 Core 上使用 NAudio,它将不再起作用。

相关内容