0

我有 ASP.Net MVC 项目,我正在尝试从 System.Speech 调用一些方法。在我的本地,一切都按预期工作,但是当我在 Windows Azure 中发布它时,它会抛出 NullReferenceException。这是我抛出异常的代码(在第 9 行):

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        }

这是抛出的异常: 在此处输入图像描述

编辑1

问题出在 SpeechSynthesizer 中,在我的本地调用 SpeechSynthesizer 构造函数时,语音属性的字段正常初始化,但是当我在调用 cosntructor 后调试发布版本时,它们已经抛出异常。 在此处输入图像描述

4

1 回答 1

1

这与 azure 无关 - 您可以在计算机上获得相同的结果。

在任务中使用 USING 是没有意义的。您运行您的任务排队的可能条件,并且在它执行之前使用语句退出 - 使速度变量无效。

这简直是​​糟糕的代码。

您几乎必须在任务的 run 方法中完成所有处理。这包括创建合成器对象。只需将字符串传递给 run 方法。

于 2016-01-10T13:37:27.933 回答