在我的个人网站上,我想让它“发音”一些东西
我解决了“概念”问题,就像在这里一样,并且在我的桌面上,当从视觉 Web 开发人员启动时,它可以顺利运行。创建一个文件,然后页面中的嵌入式播放器将播放它。完美的。
所以,我把它上传到服务器上......我收到这个错误 500:
“/sapi”应用程序中的服务器错误。访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED)) 描述:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.UnauthorizedAccessException:访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
ASP.NET 无权访问请求的资源。考虑向 ASP.NET 请求标识授予对资源的访问权限。ASP.NET 有一个基本进程标识(通常是 IIS 5 上的 {MACHINE}\ASPNET 或 IIS 6 上的网络服务),如果应用程序不模拟,则使用该标识。如果应用程序通过 模拟,则身份将是匿名用户(通常是 IUSR_MACHINENAME)或经过身份验证的请求用户。
(...)
源错误:
请看下面
源文件:c:\mypath\sapi\myfile.aspx.cs 行:21
堆栈跟踪:
[UnauthorizedAccessException:访问被拒绝。(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(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)+1565版本信息:Microsoft .NET Framework 版本:2.0.50727.3053;ASP.NET 版本:2.0.50727.3053
这是来源
源错误:
第 19 行:myfile.Open(@"C:\mypath\sapi\gen\hi.wav",SpeechStreamFileMode.SSFMCreateForWrite,false);
第 20 行:voice.AudioOutputStream = myfile;
第 21 行: voice.Speak("Hi",SpeechVoiceSpeakFlags.SVSFDefault);
我在第 21 行,Voice.speak 上遇到错误
这可能意味着 aspnet worker 用户没有某些权限
生成文件夹具有所有正确的权限:创建一个空文件。
那么,我必须授予某些系统 dll 的执行权限吗?
你知道哪个dll吗?不是,在这一点上 bin\Interop.SpeechLib.dll
,aspnet 用户拥有完全控制权。
Ps:我对(Windows)服务器有完全控制权(我的意思是,RDC 访问,不是共享主机)