C# Outlook web服务调用

C# Outlook web服务调用,c#,asp.net,outlook,console-application,C#,Asp.net,Outlook,Console Application,我正在尝试设置一个web服务,允许用户向我传递字符串主题、日期时间开始时间、日期时间结束日期、字符串正文、列表收件人、字符串所有者,然后创建一个任务。这在我的机器上运行良好,但在Windows 2003上,我不断收到不同的错误。当前我得到-Runtime.InteropServices.COM异常:检索CLSID为{0006F03A-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:80080005服务器执行失败(HRESULT的异常:0x800

我正在尝试设置一个web服务,允许用户向我传递字符串主题、日期时间开始时间、日期时间结束日期、字符串正文、列表收件人、字符串所有者,然后创建一个任务。这在我的机器上运行良好,但在Windows 2003上,我不断收到不同的错误。当前我得到-
Runtime.InteropServices.COM异常:检索CLSID为{0006F03A-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:80080005服务器执行失败(HRESULT的异常:0x80080005(CO_E_服务器执行失败))。

我使用的是一个可以通过电子邮件访问并在邮箱中运行的帐户。我不确定这是不是最好的方法,但这是我得到的。请友善一点,我是一个.NET网络开发人员,不是Outlook程序员

我的代码如下所示-

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;

我想知道服务器上是否安装了不同版本的office?我有一个在服务器上创建word文档的web应用程序,这一次服务器安装了office 2003 Compatibility作为组策略的一部分。坏事情发生了,不管怎样,卸载了它,一切又好起来了

众所周知,这些COM错误很难调试,我不知道这是什么意思。我所能提供的帮助只是我自己的一些代码,这些代码来自一个现有项目,该项目确实在Outlook 2007中成功创建了任务。这是一个基于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)

Class ID
{0006F03A-0000-0000-C000-0000000000 46}
是Outlook的Microsoft Office Interop程序集的类ID,它是Outlook的一部分。在使用.NET Office互操作性之前,您需要在服务器上安装Microsoft Office PIA

以下是Office 2010的下载链接:


如果您使用的是Visual Studio 2010,则可以将PIA直接嵌入到您自己的程序集中,而不是在服务器上安装PIA。要执行此操作,请在VS2010中“Microsoft.Office.Interop.Outlook”引用的“属性”窗口中找到“嵌入互操作类型”,并将其设置为“true”。

这已设置为true。我在服务器上安装了Office2007。我会看看你推荐的PIA。谢谢。我使用的是Office Interop版本11.0.0.0,不确定服务器上是14还是11。有人知道怎么检查吗?