Sur mon site personnel, je voudrais faire « prononcer » quelque choseText to Speech dans ASP.NET - Accès refusé ... que faire?
je résolu le problème « concept », comme dans here, et sur mon bureau, il fonctionne sans problème lors du lancement de Visual Web Developer. Crée un fichier, puis un lecteur intégré dans la page va le lire. Parfait.
Alors, j'uploadé sur le serveur ... Je reçois cette erreur 500:
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
Ceci est la source
Erreur Source:
Ligne 19: myfile.Open(@"C:\mypath\sapi\gen\hi.wav",SpeechStreamFileMode.SSFMCreateForWrite,false);
Ligne 20: voice.AudioOutputStream = myfile;
Ligne 21:voice.Speak("Hi",SpeechVoiceSpeakFlags.SVSFDefault);
J'obtiens l'erreur sur la ligne 21, Voice.speak
Cela signifie probablement que l'utilisateur des travailleurs aspnet n'a pas une permission droit
Le dossier de génération possède toutes les permissions: un fichier vide est créé .
Donc, je dois donner l'autorisation d'exécuter à une DLL système?
Savez-vous quelle DLL? Il est pasbin\Interop.SpeechLib.dll
, sur celui-ci l'utilisateur aspnet a le plein contrôle
Ps: j'ai le plein contrôle sur les (fenêtres) serveur (je veux dire, l'accès RDC, n'est pas un hébergement mutualisé)
Je pense que vous devriez envisager la possibilité que le problème _is _ l'accès au fichier. Je ne l'exclurais pas, étant donné que l'accès réel au fichier est en cours d'exécution par un morceau de code COM, peut-être à court de processus? –
si je refuse les autorisations d'écriture sur le dossier de sortie, j'obtiens une autre exception: System.Runtime.InteropServices.COMException: n'a pas pu être trouvé.(Exception de HRESULT: 0x80030002 (STG_E_FILENOTFOUND)), c'est pourquoi je pense que les problèmes sont que l'utilisateur aspnet n'a pas la bonne mission pour exécuter la voix sapi ... –
aussi, le wav est créé, et il contient le wav en-tête: RIFF & _____ WAVEfmt____data mais pas le flux de fichier, donc il ressemble à la DLL pour le faire "remplir", est bloqué? –