Я делаю домашний проект, который начался очень легко (разве это не всегда происходит?), А затем принял неприятный ход разрешений.
По сути, у меня есть домашняя интрасеть, и мой компьютер выполняет двойную функцию в качестве домашнего веб-сервера. У меня Vista, поэтому мы говорим об IIS 7.
В Visual Studio это работает отлично. У меня есть запрос на мою домашнюю страницу Outlook (2007) и отображаются следующие пару встреч. Я делаю это так,
using Microsoft.Office.Interop.Outlook;
//Be kind -- this is a work in progress
public static string nextAppointment()
{
System.Text.StringBuilder returnString = new System.Text.StringBuilder();
try
{
Application outlookApp = new ApplicationClass();
NameSpace outlookNamespace = outlookApp.GetNamespace("MAPI");
MAPIFolder theAppts = outlookNamespace.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
List<AppointmentItem> todaysAppointments = new List<AppointmentItem>();
TimeSpan oneday = new TimeSpan(24, 0, 0);
DateTime today = DateTime.Today;
DateTime yesterday = today.Subtract(oneday);
DateTime tomorrow = today.Add(oneday);
foreach (AppointmentItem someAppt in theAppts.Items)
{
if (someAppt.Start > yesterday && someAppt.Start < tomorrow)
{
todaysAppointments.Add(someAppt);
}
}
foreach (AppointmentItem todayAppts in todaysAppointments)
{
returnString.Append(todayAppts.Start.ToShortTimeString() + " -- " + todayAppts.Subject + "<br />");
}
}
catch (System.Exception ex)
{
//TO-DO: Add some real handling
returnString.Append("Cannot access calendar");
}
return returnString.ToString();
}
Этот фрагмент кода находится в стадии разработки, но вы поняли идею. Он смотрит, какие у меня есть события календаря в течение 24 часов, а затем добавляет их в строку, которую я в конечном итоге выписываю на веб-странице. Когда я отлаживаю это в Visual Studio, он отлично работает через ASP.NET Development Studio. Чувствуя себя уверенно, я беру один и тот же код и запускаю его на IIS, чтобы все могли наслаждаться дома, и получаю сообщение об ошибке (когда я не улавливаю свое исключение),
Получение фабрики класса COM для
компонент с CLSID
{0006F03A-0000-0000-C000-000000000046}
не удалось из-за следующей ошибки:
80070005.
Описание: необработанное исключение
произошло во время исполнения
текущий веб-запрос. Пожалуйста, просмотрите
трассировка стека для получения дополнительной информации о
ошибка и откуда она возникла
код.
Сведения об исключении:
System.UnauthorizedAccessException:
Получение фабрики класса COM для
компонент с CLSID
{0006F03A-0000-0000-C000-000000000046}
не удалось из-за следующей ошибки:
80070005.
ASP.NET не авторизован для доступа
запрашиваемый ресурс. Рассматривать
предоставление прав доступа к ресурсу
к идентичности запроса ASP.NET.
ASP.NET имеет базовый идентификатор процесса
(обычно {MACHINE} \ ASPNET на IIS 5
или сетевой службы на IIS 6), то есть
используется, если приложение не
имитированы. Если приложение
выдавая себя за себя, личность
будет анонимным пользователем (обычно
IUSR_MACHINENAME) или заверенный
запрос пользователя.
Чтобы предоставить ASP.NET доступ к файлу,
щелкните правой кнопкой мыши файл в проводнике,
выберите «Свойства» и выберите
Вкладка «Безопасность». Нажмите «Добавить», чтобы добавить
соответствующий пользователь или группа. основной момент
учетную запись ASP.NET и проверьте
ящики для желаемого доступа.
Я пытался изменить разрешения через Проводник на сайте, но безуспешно.
Есть идеи?