Text to Speech in ASP.NET - Zugriff verweigert wird ... was tun?
-
06-07-2019 - |
Frage
Auf meiner persönlichen Website, würde Ich mag es machen „aussprechen“ etwas
Ich löste das "Konzept" Problem, wie in hier und auf meinem Desktop funktioniert es reibungslos, wenn sie von Visual Web developer gestartet. Erstellt eine Datei, und dann wird ein eingebetteter Player auf der Seite spielt es. Perfect.
Also, ich es auf dem Server hochgeladen ... Ich erhalte diesen Fehler 500:
Serverfehler in '/ sapi' Anwendung. Zugriff wird verweigert. (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED)) Beschreibung: Eine nicht behandelte Ausnahme während der Ausführung des aufgetretenen aktuelle Web-Anfrage. Bitte lesen Sie die Stack-Trace für weitere Informationen über der Fehler und wo sie ihren Ursprung in der Code.
Ausnahmedetails: System.UnauthorizedAccessException: Zugriff wird verweigert. (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED))
ASP.NET ist nicht zugangsberechtigt die angeforderte Ressource. Erwägen Vergabe von Zugriffsrechten auf die Ressource auf die ASP.NET-Anforderung Identität. ASP.NET hat eine Basis-Prozessidentität (Typischerweise {MACHINE} \ ASPNET auf IIS 5 oder Netzwerkdienst auf IIS 6) das ist wenn die Anwendung nicht verwendet, ist impersonating. Wenn die Anwendung Identitätswechsel über die Identität wird die anonymen Benutzer (typischerweise IUSR_MACHINENAME) oder die authentifizierte Anfrage Benutzer.
(...)
Quellfehler:
Sehen Sie es unter
Quelldatei: c: \ mypath \ SAPI \ myfile.aspx.cs Line: 21
Stack-Trace:
[UnauthorizedAccessException: Zugriff ist abgelehnt. (Ausnahme von 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) 1565Versionsinformationen: Microsoft .NET Framework Version: 2.0.50727.3053; ASP.NET Version: 2.0.50727.3053
Dies ist die Quelle
Quellfehler:
Zeile 19: myfile.Open(@"C:\mypath\sapi\gen\hi.wav",SpeechStreamFileMode.SSFMCreateForWrite,false);
Zeile 20: voice.AudioOutputStream = myfile;
Zeile 21: voice.Speak("Hi",SpeechVoiceSpeakFlags.SVSFDefault);
Ich bekomme Fehler in Zeile 21, Voice.speak
Das bedeutet wahrscheinlich, dass die aspnet Arbeiter Benutzer haben nicht eine richtige Erlaubnis
Die Erzeugung Ordner haben die richtigen Berechtigungen:. Eine leere Datei erstellt wird,
Also, ich habe die Erlaubnis geben, bis zu einem gewissen System DLL ausführen?
Sie wissen, welche dll? Es ist nicht bin\Interop.SpeechLib.dll
, auf diesen einen der aspnet Benutzer hat die volle Kontrolle
Ps: ich habe die volle Kontrolle über das (Windows) Server (ich meine, den Zugang von RDC, ist keine Shared-Hosting)
Lösung
Ich habe es funktioniert, indem die AppPool als Arbeits als „Local System“ Einstellung und in den machine.config Einstellung als Systemkonto zu arbeiten
Natürlich fühle ich mich, dass als Sicherheitsproblem, wie ich auf dem (kleinen) Firmenserver meine persönliche Webseite bin Hosting (Mitarbeiter sind ausdrücklich so von der Firma Inhaber dazu berechtigt)
Vielleicht ist dies keine gute Lösung?
ich diese Einstellung nur gesetzt, für diese Webapp, und ich bin nicht so gut Codierung (so gibt es viele Fehler in meinem Code, gemessen in 100 WTFs / Minute (haha)
Andere Tipps
Ich habe ähnliche Probleme hatte, nach vielen Kopfschmerzen ich mit mir um das Problem zu lösen habe es geschafft. Ich fand zwei Probleme den ersten den Browser zu sein, ich für meinen Zweck fand nur dh Explorer funktionieren würde und nicht anderen Browser wie mozilla. Das zweite Problem war schließlich die Berechtigungen, obwohl ich alle Berechtigungen hatte richtig fand ich, dass ich die Internet-Nutzer die Erlaubnis entfernen musste und überprüfen Sie das Protokoll auf als lokales Konto Option, die dann bearbeitet.