У меня есть проект ASP.Net MVC, и я пытаюсь вызвать некоторые методы из System.Speech. В моем локальном режиме все работает так, как ожидалось, но когда я публикую его в Windows Azure, он выдает исключение NullReferenceException. Это мой код, который бросает исключение (в строке 9):System.Speech не работает на Windows Azure
1 public async static Task<byte[]> ToSpeech(string text)
2 {
3 byte[] bytes;
4 var stream = new MemoryStream();
5 await Task.Run(() =>
6 {
7 using (var speech = new SpeechSynthesizer())
8 {
9 speech.SetOutputToWaveStream(stream);
10 speech.Speak(text);
11 }
12 });
13 bytes = ConvertWavToMP3(stream);
14 return bytes;
15 }
Edit1
Проблема заключается в SpeechSynthesizer, в моем местном при вызове Конструктор SpeechSynthesizer поля свойства речи инициализируются нормально, но когда я отлаживаю версию публикации после вызова cosntructor, они уже выбрали исключение.
Спасибо за ответ, я согласен с вами, что код не очень хороший, но теперь проблема не в нем. В моем локальном при вызове конструктора SpeechSynthesizer поля речевого свойства инициализируются нормально, но когда я отлаживаю версию публикации после вызова конструктор они уже выбрали исключение. Я только что редактировал мой вопрос и добавил скриншот – Narek
Ну, я говорю вам, что это за ошибка. Вы относитесь к трудным для воспроизведения многопоточным проблемам из-за отсутствия основных принципов. Исправление путем реорганизации вашего кода занимает меньше времени, чем даже запись вашего комментария. Если вы не хотите этого делать - возможно, прочитайте книгу о многопоточном программировании. Ваша переменная имеет значение null, потому что это то, что осталось после того, как оператор using закрывает ее. – TomTom
Я изменил код, результат тот же – Narek