我有一个执行文本到语音 TTS 的 ASP.NET 应用程序。该代码在本地计算机上运行良好,但是当我将其部署在 Windows 2008 R2 服务器 Enterprise 64 位上时,应用程序池就崩溃了。该应用程序由 v4.0 .NET 框架组成。我在服务器上使用 IIS 7。以下是应用程序池崩溃时的错误。
Service Unavailable
HTTP Error 503. The service is unavailable.
这是我应该更早添加的代码
MemoryStream ms = new MemoryStream();
context.Response.ContentType = "audio/wav";
Thread t = new Thread(() =>
{
SpeechSynthesizer ss = new SpeechSynthesizer();
ss.SetOutputToWaveStream(ms);
ss.Speak(context.Request.QueryString["tts"]);
});
t.Start();
t.Join();
ms.Position = 0;
ms.WriteTo(context.Response.OutputStream);
context.Response.End();
任何帮助将不胜感激
谢谢
这是异常的更多详细信息
An unhandled exception occurred and the process was terminated.
Application ID: /LM/W3SVC/17/ROOT
Process ID: 5340
Exception: System.UnauthorizedAccessException
Message: Retrieving the COM class factory for component with CLSID {A832755E-9C2A-40B4-89B2-3A92EE705852} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).
StackTrace: at System.Speech.Internal.Synthesis.VoiceSynthesis.Speak(Prompt prompt)
at System.Speech.Synthesis.SpeechSynthesizer.Speak(Prompt prompt)
at TTS.<>c__DisplayClass3.<ProcessRequest>b__0()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
我已授予 IIS_USRS 对文件 C:\Program Files (x86)\Microsoft Speech SDK 5.1\Bin\TTSEng.dll 的完全权限。现在错误已更改为
An unhandled exception occurred and the process was terminated.
Application ID: /LM/W3SVC/17/ROOT
Process ID: 2816
Exception: System.InvalidOperationException
Message: No voice installed on the system or none available with the current security setting.
StackTrace: at System.Speech.Internal.Synthesis.VoiceSynthesis.Speak(Prompt prompt)
at System.Speech.Synthesis.SpeechSynthesizer.Speak(Prompt prompt)
at TTS.<>c__DisplayClass3.<ProcessRequest>b__0()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
我的服务器上没有任何声音设备。这个例外正确吗?