2011-04-15 10 views
0

J'essaye de mettre en place un service Web qui permet à un utilisateur de me passer - string subject, DateTime startTime, DateTime dueDate, string body, List<string> recipients, string owner et puis je crée un Task. Cela fonctionne très bien sur ma machine, mais sur Windows 2003, je continue d'avoir des erreurs différentes. Actuellement, je reçois - Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).Outlook service web appel

J'utilise un compte que l'accès e-mail et a couru sur la boîte. Je ne suis pas sûr que ce soit la meilleure façon de le faire, mais c'est ce que j'ai obtenu. Et s'il vous plaît soyez gentil - je suis un développeur Web .NET, pas un programmeur Outlook par tous les moyens.

Mon code ressemble à ceci -

Outlook task = new Outlook(); 
      TaskItem taskItem = (TaskItem)_application.CreateItem(OlItemType.olTaskItem); 
      taskItem.Subject = subject; 
      taskItem.StartDate = startTime; 
      taskItem.DueDate = dueDate; 
      taskItem.Body = body; 
      foreach (string recipient in recipients) 
      { 
       taskItem.Recipients.Add(recipient); 
      }    
      taskItem.Owner = owner; 
      taskItem.Assign(); 
      task.EntryId = taskItem.EntryID; 
      if (taskItem.Saved) 
      { 
       task.Successful = true; 
      } 
      return task; 

Répondre

0

ID de classe {0006F03A-0000-0000-C000-000000000046} est l'ID de classe de l'assemblage Interop Microsoft Office pour Outlook qui fait partie de la Microsoft Office PIAs. Vous devez installer les assemblys PIA Microsoft Office sur le serveur avant de pouvoir utiliser l'interopérabilité .NET Office.

Voici un lien de téléchargement Office 2010: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=938fe8ad-583b-4bd7-a345-23250dc15855

Si vous utilisez Visual Studio 2010, vous pouvez intégrer les PIA directement dans votre propre assemblage au lieu d'installer les PIA sur le serveur. Pour ce faire, recherchez "Embed Interop Types" dans la fenêtre "Properties" pour la référence "Microsoft.Office.Interop.Outlook" dans VS2010 et définissez-le sur "true".

+0

Ceci est défini sur Vrai déjà. J'ai installé Office 2007 sur le serveur. Je vais vérifier les PIA que vous avez recommandés. Merci. – Merds

0

Je me demande si elle est une autre version de bureau installé sur le serveur? J'ai une application Web qui crée des documents Word sur le serveur et cette fois le serveur a installé la compatibilité Office 2003 dans le cadre de la stratégie de groupe. De mauvaises choses se sont passées, de toute façon, désinstallé et tout était encore bien!

+0

J'utilise la version Office Interop 11.0.0.0, je ne sais pas si j'ai 14 sur le serveur ou 11. Quelqu'un sait comment vérifier? – Merds

0

Ces erreurs COM sont notoirement difficiles à déboguer, et je ne sais pas ce que cela signifie. Tout ce que je peux offrir de l'aide est une partie de mon propre code d'un projet existant qui crée des tâches avec succès dans Outlook 2007. Cela vient d'une application basée sur VSTO.

  Dim task As Outlook.TaskItem = DirectCast(Application.CreateItem(Outlook.OlItemType.olTaskItem), Outlook.TaskItem) 
      task.DueDate = Date.Parse(activity.ActDate) 
      task.StartDate = task.DueDate 
      task.Subject = String.Format(subjectText, activity.AppID) 
      task.Body = String.Format(bodyText, activity.AppID, activity.FileNum, activity.AppID) 
      task.ReminderTime = Now.AddMinutes(10) 
      task.ReminderSet = True 
      task.Categories = CATEGORY_TEST 
      task.Save() 
      task.Close(OlInspectorClose.olDiscard) 
      Marshal.ReleaseComObject(task)