Question

Sur mon site Web personnel, j'aimerais le faire "prononcer". quelque chose

J'ai résolu le "concept". problème, comme dans ici , et sur mon bureau, tout se passe bien à partir du lancement développeur web visuel. Crée un fichier, puis un lecteur intégré dans la page le lira. Parfait.

Alors, je l'ai téléchargé sur le serveur ... J'ai l'erreur 500:

  

Erreur de serveur dans l'application '/ sapi'.   L'accès est refusé. (Exception de   HRESULT: 0x80070005 (E_ACCESSDENIED))   Description: une exception non gérée   eu lieu pendant l'exécution du   demande web en cours. S'il vous plaît examiner le   trace de pile pour plus d'informations sur   l'erreur et où il est originaire   le code.

     

Détails de l'exception:   System.UnauthorizedAccessException:   L'accès est refusé. (Exception de   HRESULT: 0x80070005 (E_ACCESSDENIED))

     

ASP.NET n'est pas autorisé à accéder   la ressource demandée. Considérer   octroi de droits d'accès à la ressource   à l'identité de la demande ASP.NET.   ASP.NET a une identité de processus de base   (typiquement {MACHINE} \ ASPNET sur IIS 5   ou Service réseau sur IIS 6) qui est   utilisé si l'application n'est pas   personnification. Si l'application est   personnification via, l'identité   sera l'utilisateur anonyme (généralement   IUSR_MACHINENAME) ou le authentifié   demander à l'utilisateur.

     

(...)

     

Erreur source:

     

Voir ci-dessous

     

Fichier source:   c: \ mypath \ sapi \ myfile.aspx.cs   Ligne: 21

     

Trace de pile:

     

[UnauthorizedAccessException: Access   est refusé. (Exception de HRESULT:   0x80070005 (E_ACCESSDENIED))]

  SpeechLib.SpVoiceClass.Speak (String   Texte, SpeechVoiceSpeakFlags Drapeaux) +0   prova.Button1_Click (Expéditeur d'objet,   EventArgs e) dans   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 (Chaîne   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

     

Informations de version: Microsoft .NET   Version du framework: 2.0.50727.3053;   Version ASP.NET: 2.0.50727.3053

Ceci est la source

Erreur source:

Ligne 19: monfichier.Open (@ "C: \ mypath \ sapi \ gen \ hi.wav", SpeechStreamFileMode.SSFMCreateForWrite, false); ;
Ligne 20: voice.AudioOutputStream = myfile;
Ligne 21: voice.Speak ("Bonjour", SpeechVoiceSpeakFlags.SVSFDefault);

Je reçois une erreur sur la ligne 21, Voice.speak

Cela signifie probablement que l'utilisateur qui travaille sur aspnet n'a pas de permission d'accès

Le dossier de génération dispose de toutes les autorisations voulues: un fichier vide est créé.

Donc, je dois donner la permission d’exécuter à une dll système?

Savez-vous quelle dll? Ce n'est pas bin \ Interop.SpeechLib.dll , sur celui-ci l'utilisateur aspnet a le contrôle total

Ps: j'ai le contrôle total sur le serveur (Windows) (je veux dire, accès par RDC, ce n'est pas un hébergement partagé)

Était-ce utile?

La solution

Je l'ai obtenu en définissant l'AppPool comme "Système local". et en définissant dans le fichier machine.config le statut de compte système

Bien sûr, j’estime que, pour des raisons de sécurité, j’héberge mon site Web personnel sur le serveur de la (petite) entreprise (les employés sont expressément autorisés à le faire par le propriétaire de l’entreprise)

Peut-être que ce n'est pas une bonne solution?

Je règle ce paramètre uniquement pour cette application Web et je ne suis pas très doué pour le codage (il y a donc beaucoup de bogues dans mon code, mesurés de manière 100 WTF / minute (haha)

Autres conseils

J'ai eu des problèmes similaires, après de nombreux maux de tête, j'ai réussi à résoudre le problème avec moi. J'ai trouvé deux problèmes, le premier étant le navigateur, je n'ai trouvé que mon objectif, c'est-à-dire que l'explorateur fonctionnerait et pas d'autres navigateurs tels que Mozilla. Le deuxième problème était finalement les autorisations, même si j’avais toutes les autorisations correctement, j’ai trouvé qu’il me fallait supprimer l’autorisation d’utilisateur Internet et vérifier l’ouverture de session en tant qu’option de compte local qui a ensuite fonctionné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top