3

在我的个人网站上,我想让它“发音”一些东西

我解决了“概念”问题,就像在这里一样,并且在我的桌面上,当从视觉 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 访问,不是共享主机)

4

2 回答 2

2

我通过将 AppPool 设置为“本地系统”并在 machine.config 中设置为系统帐户来使其工作

当然,我觉得这是一个安全问题,因为我在(小型)公司服务器上托管我的个人网站(公司所有者明确授权员工这样做)

也许这不是一个好的解决方案?

我只为这个 webapp 设置了这个设置,而且我不太擅长编码(所以我的代码中有很多错误,以100 WTF/分钟测量(哈哈)

于 2009-06-20T21:35:38.537 回答
1

我也遇到过类似的问题,经过多次头痛后,我确实设法解决了这个问题。我发现了两个问题,第一个是浏览器,我发现仅出于我的目的,即资源管理器可以工作,而不是其他浏览器,例如 mozilla。第二个问题最后是权限,即使我拥有正确的所有权限,我发现我必须删除互联网用户权限并检查作为本地帐户登录的选项,然后该选项才起作用。

于 2011-01-17T15:48:48.447 回答