【发布时间】:2009-06-20 19:31:04
【问题描述】:
在我的个人网站上,我想让它“发音”一些东西
我解决了“概念”问题,就像在here 中一样,并且在我的桌面上,当从视觉 Web 开发人员启动时,它可以顺利运行。创建一个文件,然后页面中的嵌入式播放器将播放它。完美。
所以,我将它上传到服务器上...我收到此错误 500:
“/sapi”应用程序中的服务器错误。 访问被拒绝。 (例外来自 HRESULT: 0x80070005 (E_ACCESSDENIED)) 描述:未处理的异常 在执行过程中发生 当前的网络请求。请查看 堆栈跟踪以获取有关的更多信息 错误及其起源 代码。
异常详情: 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
堆栈跟踪:
[未授权访问异常:访问 被拒绝。 (HRESULT 的例外情况: 0x80070005 (E_ACCESSDENIED))]
SpeechLib.SpVoiceClass.Speak(字符串 文本、SpeechVoiceSpeakFlags 标志)+0 prova.Button1_Click(对象发送者, EventArgs e) 在 c:\mypath\sapi\prova.aspx.cs:21 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串 事件参数)+110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler 源控件,字符串事件参数) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔值 includeStagesAfterAsyncPoint) +1565版本信息:Microsoft .NET 框架版本: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 访问,不是共享主机)
【问题讨论】:
-
我认为您应该考虑问题是文件访问的可能性。我不会排除它,因为实际的文件访问是由一段 COM 代码执行的,可能会耗尽进程?
-
如果我拒绝对输出文件夹的写入权限,我会得到另一个异常:System.Runtime.InteropServices.COMException:找不到。 (HRESULT 的异常:0x80030002 (STG_E_FILENOTFOUND)),所以我认为问题在于 aspnet 用户没有正确的权限来运行 sapi 语音...
-
另外,wav 被创建了,它包含 wav 头:RIFF&_____WAVEfmt____data 但不包含文件流,所以看起来像是让它“填充”的 dll 被阻止了?
标签: c# asp.net windows-server-2003 text-to-speech