我有一个使用Microsoft.Speech识别WAV文件中的语音的应用程序。它在本地作为控制台应用程序运行时非常有效,但在IIS执行时可以使用barfs。
假设我在使用.NET 3.5 +的WinServer 2008上安装了以下内容:
甚至可以在IIS7上使用Microsoft.Speech吗?我在这里缺少什么?
我已经尝试将其重新编码为ASP.NET Web服务,但这也不起作用。
Suuuuper卡在这里。谢谢你,如果你可以帮助:)非常好请:))
更新 这是错误消息+堆栈跟踪:
System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) at Microsoft.Speech.Internal.SapiInterop.ISpRecognizer.CreateRecoContext(ISpRecoContext& ppNewCtxt)
at Microsoft.Speech.Internal.SapiInterop.SapiRecognizer.<>c__DisplayClass17.b__16()
at Microsoft.Speech.Internal.SapiInterop.SapiProxy.PassThrough.Invoke(ObjectDelegate pfn)
at Microsoft.Speech.Internal.SapiInterop.SapiRecognizer.CreateRecoContext()
at Microsoft.Speech.Recognition.RecognizerBase.Initialize(SapiRecognizer recognizer, Boolean inproc)
at Microsoft.Speech.Recognition.SpeechRecognitionEngine.get_RecoBase()
at Microsoft.Speech.Recognition.SpeechRecognitionEngine.Initialize(RecognizerInfo recognizerInfo)
at Microsoft.Speech.Recognition.SpeechRecognitionEngine..ctor()
at myRecognize.Recognize..cctor() The type initializer for 'myRecognize.Recognize' threw an exception. myRecognize
at myRecognize.Recognize.get_Reco()
at myRecognize.Recognize.Listen(String wavLoc, String grammars)
答案 0 :(得分:1)
简单修复:为运行应用程序池的同一用户授予对C:\windows\system32\config\systemprofile\appdata\roaming
的读/写访问权限。
答案 1 :(得分:0)
在黑暗中拍摄:它正在尝试并且无法从磁盘中加载某些文件,而是IIS应用程序池用户无权读取的区域。
尝试运行sysinternals ProcessMon以找出哪个,然后将应用池用户(或本地组IIS_IUSRS,如果您尚未更改应用池用户)授予该目录。