2013-06-18 3 views
1

Я разработал приложение для интрасети, в котором выпадающий список привязан к глобальным данным списка адресов Outlook. Код такой, как показано ниже:System.Runtime.InteropServices.COMException (0x80010001)

Список слов = новый словарь(); // Создайте приложение Outlook. Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();

 // Get the NameSpace information. 
     Microsoft.Office.Interop.Outlook.NameSpace oNS = oApp.GetNamespace("mapi"); 


     // oNS.Logon(oNS.CurrentProfileName, "*********", true, true); 


     // Get the default Contacts folder. 
     Microsoft.Office.Interop.Outlook.MAPIFolder oContacts = oNS.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderContacts); 
     // Microsoft.Office.Interop.Outlook.AddressLists = oNS.AddressLists; 
     // Get the Items collection from the folder. 
     Microsoft.Office.Interop.Outlook.Items oItems = (Microsoft.Office.Interop.Outlook.Items)oContacts.Items; 
     Microsoft.Office.Interop.Outlook.ContactItem oCt = (Microsoft.Office.Interop.Outlook.ContactItem)oItems.GetFirst(); 


     Microsoft.Office.Interop.Outlook.AddressLists addressbook=oNS.AddressLists; 
     Microsoft.Office.Interop.Outlook.AddressList addrList = oNS.GetGlobalAddressList(); 
     foreach (Microsoft.Office.Interop.Outlook.AddressEntry addentry in addrList.AddressEntries) 
     { 

      Microsoft.Office.Interop.Outlook.ExchangeUser contact = addentry.GetExchangeUser(); 
      if(contact!=null) 
       list.Add(contact.PrimarySmtpAddress, addentry.Name); 
      // string email = contact.Email1Address; 
     } 
     ((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Email")).DataSource = list; 
     ((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Email")).DataTextField = "Key"; 
     ((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Email")).DataValueField = "Value"; 

     ((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Email")).DataBind(); 

    } 
    catch (System.Exception ex) 
    { 

    } 

код работает отлично в системе разработки, но дает ошибку в сервере как System.Runtime.InteropServices.COMException (0x80010001): Получение COM фабрики классов для компонента с CLSID {0006F03A-0000-0000-C000- 000000000046} не удалось из-за следующей ошибки: 80010001.

Outllook установлен и настроен на учетную запись электронной почты.

Пожалуйста, помогите в фиксировании вопрос:

ответ

0

ли вы установили прогноз на сервере, приложение интрасети работает на? Если вы это сделаете, убедитесь, что компоненты Outlook имеют правильные разрешения на этом компьютере.

+0

Привет, у меня установлен прогноз на сервере, а также учетная запись настроена для доступа к глобальному списку адресов. Но приложение Outlook не видно в конфигурации DCOM сервера, но прогноз работает –

+0

Пожалуйста, помогите мне в решении проблемы –

-1

Метод, который работает,

try { outlook = new Outlook.Application(); } 
catch { outlook = new Outlook.Application(); }