我想补充一下这个问题。
以前,当我运行运行旧版 Windows 2016 Server DC 安装的旧 DC 服务器时,这是有效的。
一旦我们丢失了该 DC,然后硬盘驱动器故障导致备份 DC 以及整个 Web 森林失效,我们就失去了让该站点正常运行的能力。
所以,过去的工作,现在,无论微软做什么,都行不通。
错误
无法加载 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,AcmFormatSuggestFlagsSuggestFlags)+0
NAudio.Wave.Compression.AcmStream.SuggestPcmFormat(WaveFormatcompressedFormat)+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(字符串 mp3FileName)+83
TagLib._Default.UploadMultipleFiles(Object sender, EventArgs e) in 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(布尔includeStagesBeforeAsyncPoint,布尔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
好的。
这是我发现的。
在没有桌面体验的 Windows 2016 Server Core 下不再支持我当前使用的 NAudio 组件。而2016 Server Core,没有做桌面体验的能力,也不想加到核心服务器上。
NAudio 组件的开发人员在他的网站上有关于此错误和问题的所有信息。
NoDriver 调用 acmFormat 建议使用 NAudio 播放 MP3
我正在寻找另一种获取 MP3 元数据的解决方案,例如我也用于元数据的
TagLib
(NAudio 严格用于文件持续时间,因为它返回了正确的数据,而 TagLib 没有。TagLib 的作者正在工作在上面。)。
我希望以上信息对可能遇到同样问题的其他人有所帮助。如果您在 Server 2016 Core 上使用 NAudio,它将不再工作。