2009-06-20 2 views
2

, 내가 뭔가ASP.NET에서 텍스트 음성 - 액세스가 거부되었습니다. 어떻게해야합니까? 내 개인 웹 사이트에

내가 here에서와 같이, "개념"문제를 해결하고, 시각적 웹 개발자에서 실행하면 바탕 화면에 원활하게 작동에게는 "발음"하고 싶습니다. 파일을 만들고 페이지에 포함 된 플레이어가 파일을 재생합니다. 완전한.

행 19 : myfile.Open(@"C:\mypath\sapi\gen\hi.wav",SpeechStreamFileMode.SSFMCreateForWrite,false);
이 소스를

소스 오류입니다

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:\mypath\sapi\myfile.aspx.cs Line: 21

Stack 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:\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(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

Version Information: Microsoft .NET Framework Version:2.0.50727.3053; ASP.NET Version:2.0.50727.3053

:

그래서, 서버에 업로드 ...이 오류 (500)를 얻을 수 라인 20 : voice.AudioOutputStream = myfile;
라인 21 : 나는 21 행에 오류가 1,238,599,

, 아마도 ASPNET 작업자 사용자가

가 생성 폴더의 모든 권리 권한이 일부 권리 허락되지 않았 음을 의미 Voice.speak

: 빈 파일이 만들어집니다 .

그래서 일부 시스템 dll에 실행 권한을 부여해야합니까?

dll을 알고 계십니까? 그것은이 하나 ASPNET 사용자가 모든 권한을 가지고,

시하지bin\Interop.SpeechLib.dll입니다 : 내가 (창)에 대한 모든 서버 (나는 호스팅 공유되지 않습니다, RDC 액세스를 의미)

+0

나는이 문제가 _is라는 가능성을 고려해야한다고 생각합니다. _ 파일 액세스. 실제 파일 액세스가 COM 코드 조각에 의해 수행되고 있음을 감안할 때, 나는 그것을 배제하지 않을 것입니다. –

+0

출력 폴더에 대한 쓰기 권한을 거부하면 다른 예외가 발생합니다. System.Runtime.InteropServices.COMException : 찾을 수 없습니다.(HRESULT에서 예외 : 0x80030002 (STG_E_FILENOTFOUND)), 그래서 내가 왜 문제는 aspnet 사용자가 sapi 음성을 실행하는 올바른 persmission되지 않은 것 같아요 ... –

+0

또한, wav가 만들어지고 wav 헤더 : RIFF & _____ WAVEfmt____data 파일 스트림이 아니므로 "채우기"로 설정하는 DLL처럼 보입니다. 차단 되었습니까? –

답변

2

이 AppPool을 "로컬 시스템"으로 설정하고 machine.config를 SYSTEM 계정으로 작동하도록 설정하여 작동하게했습니다.

물론 보안상의 문제로 생각합니다. 개인 웹 사이트를 호스팅하고 있습니다. (소규모) 회사 서버 (직원은 회사 소유자가 명시 적으로 권한을 부여 받음)

아마도 이것이 좋은 해결책이 아닌 것일까 요?

내가는이 웹 애플리케이션에 대해서만 설정을 설정하고 (그래서 100 WTFs/minute (하하) 나는 비슷한 문제가 있었다

+1

누구나 가지고있는 사람 이것이 왜 효과가 있었는지 추측하시오. COM 권한? –

+0

기본 ASPNET 사용자가 "guest"권한을 가지고 있기 때문에 (아마도 맞다면) ** 아마 **, 로컬 시스템으로 실행하면 시스템 파일을 실행할 수 있습니다. –

+0

어떻게했는지 설명해 주시겠습니까? 나는 정확하게 해결할 수없는 문제를 가지고 있습니다. AppPool을 "로컬 시스템"으로 실행하도록 설정했지만 도움이되지 않았습니다. – DotnetDude

1

측정 내 코드에서 버그를 많이, 거기에 나는 많은 후 코딩에 너무 좋은 아니에요 두통이 나에게 문제를 해결할 수 있었다. 나는 두 가지 문제가 처음으로 브라우저를 발견, 내 목적만을 위해 즉 탐색기와 모질라 같은 다른 브라우저가 작동하지 않는 발견했다. 두 번째 문제는 마침내 사용 권한, 비록 내가 모든 사용 권한을 올바르게 가지고있어서 인터넷 사용자 권한을 제거하고 로컬 계정 옵션으로 로그온했는지 확인해야합니다.

관련 문제