3

私の個人的なウェブサイトでは、何かを「発音」させたいと思います

ここにあるように、「コンセプト」の問題を解決しました。デスクトップでは、ビジュアルWeb開発者から起動するとスムーズに動作します。ファイルを作成すると、ページに埋め込まれたプレーヤーがそれを再生します。完全。

だから、私はそれをサーバーにアップロードしました...私はこのエラー500を受け取ります:

'/sapi'アプリケーションのサーバーエラー。アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))説明:現在のWeb要求の実行中に未処理の例外が発生しました。エラーとエラーがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。

例外の詳細:System.UnauthorizedAccessException:アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))

ASP.NETは、要求されたリソースへのアクセスを許可されていません。リソースへのアクセス権をASP.NET要求IDに付与することを検討してください。ASP.NETには、アプリケーションが偽装していない場合に使用される基本プロセスID(通常、IIS5の{MACHINE}\ AS​​PNETまたは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によるアクセスは共有ホスティングではありません)

4

2 に答える 2

2

AppPoolを「ローカルシステム」として機能するように設定し、machine.configでSYSTEMアカウントとして機能するように設定することで機能しました

もちろん、私は個人のウェブサイトを(小さな)会社のサーバーでホストしているので、セキュリティ上の問題としてそれを感じています(従業員は会社の所有者によって明示的に許可されています)

多分これは良い解決策ではありませんか?

私はこの Web アプリケーションに対してのみこの設定を行いました。私はコーディングがあまり得意ではありません (そのため、私のコードには多くのバグがあり、100 WTFs/分で測定されます(笑))

于 2009-06-20T21:35:38.537 に答える
1

私は同様の問題を抱えていましたが、多くの頭痛の種の後、問題を解決することができました。最初はブラウザーであるという 2 つの問題が見つかりました。私の目的のためだけに見つかりました。つまり、エクスプローラーは機能し、mozilla などの他のブラウザーは機能しませんでした。2番目の問題は最終的にアクセス許可でした。すべてのアクセス許可を正しく持っていたにもかかわらず、インターネットユーザーのアクセス許可を削除し、ローカルアカウントとしてログオンするオプションを確認する必要があることがわかりました。

于 2011-01-17T15:48:48.447 に答える