私の個人的なウェブサイトでは、何かを「発音」させたいと思います
ここにあるように、「コンセプト」の問題を解決しました。デスクトップでは、ビジュアルWeb開発者から起動するとスムーズに動作します。ファイルを作成すると、ページに埋め込まれたプレーヤーがそれを再生します。完全。
だから、私はそれをサーバーにアップロードしました...私はこのエラー500を受け取ります:
'/sapi'アプリケーションのサーバーエラー。アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))説明:現在のWeb要求の実行中に未処理の例外が発生しました。エラーとエラーがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。
例外の詳細:System.UnauthorizedAccessException:アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))
ASP.NETは、要求されたリソースへのアクセスを許可されていません。リソースへのアクセス権をASP.NET要求IDに付与することを検討してください。ASP.NETには、アプリケーションが偽装していない場合に使用される基本プロセスID(通常、IIS5の{MACHINE}\ ASPNETまたはIIS6のネットワークサービス)があります。アプリケーションがを介して偽装している場合、IDは匿名ユーザー(通常はIUSR_MACHINENAME)または認証された要求ユーザーになります。
(...)
ソースエラー:
以下を参照してください
ソースファイル:c:\ mypath \ sapi \ myfile.aspx.cs行:21
スタックトレース:
[UnauthorizedAccessException:アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))]
SpeechLib.SpVoiceClass.Speak(String Text、SpeechVoiceSpeakFlags Flags)+0 prova.Button1_Click(Object sender、EventArgs e)in c:\ mypath \ sapi \ prova.aspx.cs:21 System.Web.UI.WebControls.Button.OnClick(EventArgs e)+111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)+110System.Web.UI.WebControls.Button.System.Web.UI
。 IPostBackEventHandler.RaisePostBackEvent(String eventArgument)+10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl、String eventArgument)+13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)+36
System.Web.UI.Page.ProcessRequestMain(ブール値includeStagesBeforeAsyncPoint、ブール値includeStagesAfterAsyncPoint)+1565バージョン情報:Microsoft .NET Frameworkバージョン:2.0.50727.3053; ASP.NETバージョン:2.0.50727.3053
これがソースです
ソースエラー:
19行目:myfile.Open(@"C:\mypath\sapi\gen\hi.wav",SpeechStreamFileMode.SSFMCreateForWrite,false);
20voice.AudioOutputStream = myfile;
行目:21行目: voice.Speak("Hi",SpeechVoiceSpeakFlags.SVSFDefault);
21行目でエラーが発生しますVoice.speak
これはおそらく、aspnetワーカーユーザーに適切な権限がないことを意味します
生成フォルダーにはすべての適切なアクセス許可があります。空のファイルが作成されます。
だから、私はいくつかのシステムdllに実行の許可を与える必要がありますか?
どのdllを知っていますか?それはそうではありません bin\Interop.SpeechLib.dll
、これではaspnetユーザーが完全に制御できます
追伸:私は(Windows)サーバーを完全に制御できます(つまり、RDCによるアクセスは共有ホスティングではありません)