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 を使用しても意味がありません。タスクがキューに入れられている可能性のある条件を実行し、それが実行される前に using ステートメントが終了し、速度変数が無効になります。

これは単に悪いコードです。

ほとんどすべての処理をタスクの run メソッドで行う必要があります。これには、シンセサイザー オブジェクトの作成が含まれます。文字列を run メソッドに渡すだけです。

于 2016-01-10T13:37:27.933 に答える