auf meiner persönlichen Webseite, würde Ich mag es machen „aussprechen“ etwasText zu Sprache in ASP.NET - Zugriff verweigert ... was tun?
ich das „Konzept“ Problem gelöst, wie in here, und auf meinem Desktop reibungslos funktioniert, wenn sie von Visual Web Developer gestartet. Erstellt eine Datei und ein eingebetteter Player auf der Seite spielt sie ab. Perfekt.
Also, ich es auf den Server hochgeladen ... Ich erhalte diese Fehler 500:
Zeile 19: myfile.Open(@"C:\mypath\sapi\gen\hi.wav",SpeechStreamFileMode.SSFMCreateForWrite,false);
Server Error in '/sapi' Application. Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via , the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.
(...)
Source Error:
See it below
Source File: c:\mypath\sapi\myfile.aspx.cs Line: 21
Stack Trace:
[UnauthorizedAccessException: Access is denied. (Exception from 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) +110
System.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(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565Version Information: Microsoft .NET Framework Version:2.0.50727.3053; ASP.NET Version:2.0.50727.3053
dies die Quelle
Quellfehler ist Zeile 20: voice.AudioOutputStream = myfile;
Zeile 21:voice.Speak("Hi",SpeechVoiceSpeakFlags.SVSFDefault);
ich Fehler in Zeile 21, Voice.speak
Das bedeutet wahrscheinlich, dass die aspnet Arbeiter Benutzer hat nicht eine richtige Erlaubnis
Die Erzeugung Ordner hat die richtigen Berechtigungen: eine leere Datei erstellt wird, .
Also, ich muss die Erlaubnis geben, einige System DLL ausführen?
Wissen Sie welche DLL? Es ist nichtbin\Interop.SpeechLib.dll
, auf diesen einen der aspnet Benutzer die volle Kontrolle
Ps hat: i die volle Kontrolle über die (Fenster) haben Server (ich meine, den Zugang von RDC, ist kein Shared Hosting)
Ich denke, dass Sie die Möglichkeit betrachten sollten, dass das Problem _is ist _ der Dateizugriff. Ich würde es nicht ausschließen, wenn man bedenkt, dass der eigentliche Dateizugriff von einem Stück COM-Code ausgeführt wird, der möglicherweise nicht mehr läuft? –
Wenn ich Schreibberechtigungen für den Ausgabeordner verweigern, erhalte ich eine weitere Ausnahme: System.Runtime.InteropServices.COMException: konnte nicht gefunden werden.(Ausnahme von HRESULT: 0x80030002 (STG_E_FILENOTFOUND)), deshalb denke ich, dass das Problem ist, dass der Aspnet-Benutzer nicht die richtige Persmission hat, um die Sapi-Stimme zu laufen ... –
auch die WAV wird erstellt, und sie enthält die WAV Header: RIFF & _____ WAVEfmt____data, aber nicht der Datei-Stream, so sieht es aus wie die DLL, um es "füllen" zu machen, ist blockiert? –