На моем личном веб-сайте я бы хотел, чтобы он "произнес" что-то
Я решил проблему с «концепцией», как в здесь , и на моем рабочем столе он работает плавно при запуске из визуального веб-разработчика. Создает файл, а затем встроенный проигрыватель на странице будет воспроизводить его. Совершенная.
Итак, я загрузил его на сервер ... Я получаю эту ошибку 500:
Ошибка сервера в приложении '/ sapi'.
В доступе отказано. (Исключение из
HRESULT: 0x80070005 (E_ACCESSDENIED))
Описание: необработанное исключение
произошло во время исполнения
текущий веб-запрос. Пожалуйста, просмотрите
трассировка стека для получения дополнительной информации о
ошибка и откуда она возникла
код.
Сведения об исключении:
System.UnauthorizedAccessException:
В доступе отказано. (Исключение из
HRESULT: 0x80070005 (E_ACCESSDENIED))
ASP.NET не авторизован для доступа
запрашиваемый ресурс. Рассматривать
предоставление прав доступа к ресурсу
к идентичности запроса ASP.NET.
ASP.NET имеет базовый идентификатор процесса
(обычно {MACHINE} \ ASPNET на IIS 5
или сетевой службы на 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 (Отправитель объекта,
EventArgs e) в
C: \ mypath \ SAPI \ prova.aspx.cs: 21
System.Web.UI.WebControls.Button.OnClick (EventArgs
д) + 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
Информация о версии: 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 не имеет каких-либо прав доступа
Папка создания имеет все необходимые разрешения: создан пустой файл.
Итак, я должен дать разрешение на выполнение некоторой системной DLL?
Вы знаете, какая dll? Это не bin\Interop.SpeechLib.dll
, в этом случае пользователь aspnet имеет полный контроль
PS: у меня есть полный контроль над сервером (windows) (я имею в виду, доступ по RDC, это не общий хостинг)