2

我有一个使用Microsoft.Speech来识别WAV文件中的语音的应用程序。当作为控制台应用程序在本地运行时,它可以很好地工作,但在由IIS执行时会有条码通过IIS运行Microsoft.Speech?

假设我有以下安装在2008年WinServer与.NET 3.5+:

  1. 微软语音平台 - 软件开发工具包(SDK)(10.1版)
  2. 微软语音平台 - 服务器运行时的语言( 10.1版)
  3. 微软语音平台 - 软件开发工具包(SDK)(10.1版)

它甚至有可能使用过Microsoft.Speech IIS7?我在这里错过了什么?

我试过将它重新编码为ASP.NET Web服务,但那也不起作用。

Suuuuper卡在这里。谢谢如果你能帮助:)拜托:)

UPDATE: 这里的错误信息+堆栈跟踪:

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

当你去看医生诊断..你得告诉他症状。你为什么不写错误/例外,你看到了?是否花费太多时间(超时错误)?您的wav文件在哪里(用于读取权限问题)? – ankitjaininfo 2010-08-02 06:09:05

+0

你会得到什么错误? – SLaks 2010-08-02 06:09:39

+0

我会尽快更新错误信息......谢谢! – Aaron 2010-08-02 07:05:34

回答

0

瞎猜:它的尝试和失败从磁盘加载一些文件,从IIS应用程序池用户没有权限读取的区域。

尝试运行sysinternals ProcessMon以找出哪些,然后将该应用程序池用户(或本地组IIS_IUSRS,如果您未更改应用程序池用户)权限授予该目录。

+0

感谢您的建议。我试图使用ProcessMon,但它吐出了这么多的记录,我不确定要过滤的内容。我尝试过滤仅涉及我的语音识别.exe的错误消息,但无法真正地将任何内容排除在外。对我应该寻找什么有什么建议? – Aaron 2010-08-02 12:33:07

+0

结果上的过滤器被拒绝访问?我不确定2008年的IIS流程是什么。 – Rup 2010-08-02 13:10:54

+0

好的,我来看看。感谢您的帮助...我会回报。 – Aaron 2010-08-02 13:11:45

1

简单修复:授予对运行应用程序池的同一用户的C:\windows\system32\config\systemprofile\appdata\roaming的读/写访问权限。