Голос не установлен в системе или недоступен с текущими настройками безопасности
Исключение на сервере IIS. При попытке создать файл.wav на C# с помощью SpeechSynthesizer.
3 ответа
Эта ошибка возникает, когда приложение не может получить доступ к голосу для использования SpeechSynthesizer. Первой возможной причиной является отсутствие каких-либо установленных голосов в системе. Скорее всего, это не проблема, но вы все равно должны дважды проверить, выполнив что-то вроде следующего кода:
SpeechSynthesizer ssTest = new SpeechSynthesizer();
System.Diagnostics.Debug.WriteLine(ssTest.GetInstalledVoices().Count);
Предполагая, что приведенное выше возвращает число больше 0, проблема, вероятно, является более сложной проблемой с настройками безопасности вашего приложения.
Несколько методов в классе SpeechSynthesizer, включая SetOutputToWaveFile, требуют, чтобы непосредственный вызывающий объект был полностью доверенным. Это может не сильно беспокоить настольное приложение (для которого, вероятно, был разработан класс SpeechSynthesizer), но имеет более серьезные последствия для безопасности в веб-среде. Поэтому настройки IIS по умолчанию только делают приложения частично доверенными. Есть несколько способов изменить это, возможно, самый быстрый и, безусловно, самый грязный, это переключение удостоверения пула приложений со стандартного на учетную запись с правами администратора, например, учетную запись LocalSystem.
Еще раз, просто для акцента, это серьезно подорвет безопасность вашего приложения и должно быть полностью исследовано перед внедрением.
Простое исправление: предоставить доступ на чтение / запись к C:\windows\system32\config\systemprofile\appdata\roaming
для того же пользователя, под которым работает пул приложений.