我有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 }
EDIT1
问题在于SpeechSynthesizer,在我的本地调用SpeechSynthesizer构造函数时,speech属性的字段正常初始化,但是当我调用cosntructor后调试发布版本时,他们已经抛出了异常。
答案 0 :(得分:1)
这与azure无关 - 您可以在计算机上使用相同的功能。
使用USING与任务没有任何意义。您可以运行任务排队的可能条件,然后执行using语句退出 - 使速度变量无效。
这只是糟糕的代码。
你必须完成任务的run方法中的所有处理。这包括创建合成器对象。只需将字符串传递给run方法即可。