On my personal website, i would like to make it “pronounce” something
I solved the “concept” problem, as in here, and on my desktop it works smoothly when launched from visual web developer. Creates a file, and then an embedded player in the page will play it. Perfect.
So, I uploaded it on the server… I get this error 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:mypathsapimyfile.aspx.cs
Line: 21Stack 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:mypathsapiprova.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
This is the source
Source Error:
Line 19: myfile.Open(@"C:mypathsapigenhi.wav",SpeechStreamFileMode.SSFMCreateForWrite,false);
Line 20: voice.AudioOutputStream = myfile;
Line 21: voice.Speak("Hi",SpeechVoiceSpeakFlags.SVSFDefault);
I get error on line 21, Voice.speak
That probably means that the aspnet worker user has not some right permission
The generation folder has all the right permissions: an empty file is created.
So, i have to give permission of execute to some system dll?
Do you know which dll? It is not binInterop.SpeechLib.dll, on this one the aspnet user has full control
Ps: i have full control on the (windows) server (i mean, access by RDC, is not a shared hosting)
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
I got it working by setting the AppPool as working as “Local System” and by setting in the machine.config to work as SYSTEM account
Of course i feel that as a security issue, as i am hosting my personal website on the (small) company server (Employees are explicitly authorized to do so by the company owner)
Maybe this is not a good solution?
I set this setting only for this webapp, and i am not so good at coding (so there are lots of bugs in my code, measured in 100 WTFs/minute (haha)
Method 2
I have had similar problems, after many headaches i did manage to solve the issue with me. I found two problems the first being the browser, i found for my purpose only ie explorer would work and not other browsers such as mozilla. The second problem was finally the permissions, even though i had all permissions correctly i found that i had to remove the internet user permission and check the log on as local account option which then worked.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0