3

SpeechSynthesizer を使用して c# で .wav ファイルを作成しようとすると、IIS サーバーで例外が発生します。

4

3 に答える 3

1

C:\windows\system32\config\systemprofile\appdata\roaming簡単な修正:アプリ プールが実行されているのと同じユーザーに読み取り/書き込みアクセスを許可します。

于 2014-02-20T14:49:08.383 に答える
1

このエラーは、SpeechSynthesizer が使用する音声にアプリケーションがアクセスできない場合に発生します。最初に考えられる原因は、システムにボイスがインストールされていないことです。おそらくこれは問題ではありませんが、次のようなコードを実行して再確認する必要があります。

SpeechSynthesizer ssTest = new SpeechSynthesizer();
System.Diagnostics.Debug.WriteLine(ssTest.GetInstalledVoices().Count);

上記が 0 より大きい数値を返すと仮定すると、問題はアプリケーションのセキュリティ設定に関するより複雑な問題である可能性があります。

SetOutputToWaveFile など、SpeechSynthesizer クラスのいくつかのメソッドでは、直接の呼び出し元が完全に信頼されている必要があります。これは、デスクトップ アプリケーション (SpeechSynthesizer クラスが設計された可能性が高い) にとっては大きな懸念事項ではないかもしれませんが、Web 環境ではより深刻なセキュリティ上の影響があります。したがって、IIS の既定の設定では、アプリケーションが部分的に信頼されるだけです。これを変更するにはいくつかの方法がありますが、おそらく最も迅速で確実に最も厄介な方法は、アプリケーション プールのID をデフォルトから LocalSystem アカウントのような管理者権限を持つアカウントに切り替えることです。

繰り返しになりますが、これはアプリケーションのセキュリティに深刻な損害を与えるため、実装する前に十分に調査する必要があります。

于 2011-08-18T17:11:07.443 に答える