В системе нет голосовой связи или она недоступна с текущими настройками безопасности - PullRequest
3 голосов
/ 11 августа 2011

Исключение на сервере IIS. При попытке создать файл .wav на c # с помощью SpeechSynthesizer.

Ответы [ 3 ]

1 голос
/ 18 августа 2011

Эта ошибка возникает, когда приложение не может получить доступ к голосу для использования SpeechSynthesizer.Первой возможной причиной является отсутствие каких-либо установленных голосов в системе.Скорее всего, это не проблема, но вы все равно должны дважды проверить, выполнив что-то вроде следующего бита кода:

SpeechSynthesizer ssTest = new SpeechSynthesizer();
System.Diagnostics.Debug.WriteLine(ssTest.GetInstalledVoices().Count);

Если предположить, что выше возвращает число больше 0, проблема, скорее всего, болеесложная проблема с настройками безопасности вашего приложения.

Несколько методов в классе SpeechSynthesizer, включая SetOutputToWaveFile, требуют, чтобы непосредственный вызывающий объект был полностью доверенным.Это может не вызывать особого беспокойства в случае настольного приложения (для которого, вероятно, был разработан класс SpeechSynthesizer), но оно имеет более серьезные последствия для безопасности в веб-среде.Поэтому настройки IIS по умолчанию только делают приложения частично доверенными.Есть несколько способов изменить это, возможно, самый быстрый и, безусловно, самый грязный способ - это переключение идентификатора пула приложений со стандартного на учетную запись с правами администратора, например учетную запись LocalSystem.

Еще раз, просто для акцента, это серьезно подорвет безопасность вашего приложения и должно быть полностью исследовано перед внедрением.

0 голосов
/ 19 февраля 2015

Просто запустите приложение от имени администратора. ;)

error run as administrator

0 голосов
/ 20 февраля 2014

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

...