2009-06-20 7 views
2

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) +1565

Version 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)

+0

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? –

+0

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 ... –

+0

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? –

Antwort

2

ich habe es funktioniert, indem die AppPool als Arbeits als „Local System“ Einstellung und in den machine.config Einstellung

natürlich als SYSTEM-Konto arbeitet ich das Gefühl, dass als Sicherheitsproblem, wie ich meine persönliche Website bin Hosting auf der (kleine) Firmenserver (Mitarbeiter sind ausdrücklich vom Firmeninhaber dazu berechtigt)

Vielleicht ist das keine gute Lösung?

Ich habe dies nur für diese Webapp Einstellung, und ich bin nicht so gut Codierung (so gibt es viele Fehler in meinem Code sind, gemessen in 100 WTFs/minute (haha)

+1

Jeder hat eine Vermutung, warum das funktioniert hat? COM-Berechtigungen? –

+0

Ich denke, weil der Standard-ASPNET-Benutzer "Gast" -Privilegien hat, (wenn ich Recht habe), so ** vielleicht **, es als lokales System ausgeführt wird, lassen Sie Systemdateien ausführen –

+0

Können Sie bitte erklären, wie Sie das getan haben? Ich habe genau das gleiche Problem, das ich nicht lösen kann. Ich habe den AppPool so eingestellt, dass er als "Local System" läuft und es hat mir nicht geholfen – DotnetDude

1

ich ähnliche Probleme gehabt haben, nach vielen Kopfschmerzen Ich habe es geschafft, das Problem mit mir zu lösen.Ich habe zwei Probleme gefunden, die erste war der Browser, ich fand nur für meinen Zweck, dh Explorer würde funktionieren und nicht andere Browser wie Mozilla.Das zweite Problem war schließlich die Berechtigungen, obwohl ich hatte alle Berechtigungen korrekt Ich fand, dass ich die Internetbenutzerberechtigung entfernen musste und die Anmeldung als lokale Kontowahl prüfte, die dann funktionierte

Verwandte Themen