2

У меня есть приложение, которое использует Microsoft.Speech для распознавания речи в WAV-файле. Он отлично работает при запуске локально в качестве консольного приложения, но barfs, когда выполняется IIS.Запуск Microsoft.Speech через IIS?

Если предположить, что у меня есть следующие установлены на WinServer 2008 с .NET 3.5+:

  1. Microsoft Speech Platform - набор инструментальных средств разработки программного обеспечения (SDK) (версия 10.1)
  2. Microsoft Speech Platform - Сервер времени выполнения языков (Версия 10.1)
  3. Microsoft Speech Platform - Software Development Kit (SDK) (версия 10,1)

ли даже можно использовать Microsoft.Speech над IIS7? Что мне здесь не хватает?

Я пробовал перекодировать его как веб-службу ASP.NET, но это тоже не работает.

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

+0

Какая ошибка у вас? – SLaks

+0

В ближайшее время я попытаюсь обновить сообщение об ошибке ... Спасибо! – Aaron

ответ

0

Выстрел в темноте: он пытается и не в состоянии загрузить некоторые файлы с диска , из области, в которой пользователь пула приложений IIS не имеет права на чтение.

Попробуйте запустить sysinternals ProcessMon, чтобы узнать, какие, а затем предоставить пользователю пула приложений (или локальной группе IIS_IUSRS, если вы не изменили пользователя пула приложений), разрешения для этого каталога.

+0

Спасибо за предложение. Я пытаюсь использовать ProcessMon, но он выплескивает так много записей, и я не уверен, для чего фильтровать. Я попытался фильтровать только сообщения об ошибках, связанные с моим распознаванием речи .exe, но ничего не могу сделать. Есть ли какие-либо предложения относительно того, что я должен искать? – Aaron

+0

Фильтр по результату ACCESS DENIED? Я не уверен, что процесс IIS в 2008 году извиняется. – Rup

+0

Хорошо, я посмотрю. Спасибо за вашу помощь ... Я отчитаю. – Aaron

1

Простое исправление: Предоставьте доступ для чтения/записи до C:\windows\system32\config\systemprofile\appdata\roaming для того же пользователя, с которым работает пул приложений.

Смежные вопросы