代码之家  ›  专栏  ›  技术社区  ›  Anjisan

无法连接ASP。NET到IIS中的Outlook,但可以通过Visual Studio

  •  1
  • Anjisan  · 技术社区  · 17 年前

    基本上,我有一个家庭内联网,我的电脑承担着家庭网络服务器的双重职责。我正在运行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开发工作室。我很有信心,我拿着同样的代码在IIS上运行,让家里的所有人都能享受,但我遇到了错误(当我没有捕获到我的异常时),

    {0006F03A-0000-0000-C000-000000000 46} 由于以下错误而失败:

    描述:未处理的异常 在执行过程中发生 当前web请求。请查看 堆栈跟踪以获取有关的详细信息 代码。

    正在检索的COM类工厂 {0006F03A-0000-0000-C000-000000000 46} 由于以下错误而失败: 80070005.

    ASP。NET无权访问 请求的资源。考虑 (通常在IIS 5上为{MACHINE}\ASPNET 或IIS 6上的网络服务),即 IUSR_MACHINENAME)或经过身份验证的

    授予ASP。NET访问文件, 在资源管理器中右键单击该文件, 选择“属性”,然后选择 安全选项卡。单击“添加”以添加 适当的用户或组。高亮

    我尝试通过网站上的资源管理器更改权限,但没有成功。

    有什么想法吗?

    3 回复  |  直到 17 年前
        1
  •  1
  •   Otávio Décio    17 年前

        2
  •  1
  •   cdonner    17 年前

    为了让其他人找出问题所在,您需要提供有关您的应用程序(web配置)和IIS设置的更多信息。

    或者,看看 this article

    尝试在web.config或代码中启用模拟,关闭匿名访问,如果集成不起作用,请尝试应用程序池的经典管道。

        3
  •  0
  •   Anjisan    17 年前

    (1) 在web.config中或通过iis输入要模拟的身份凭据,然后

    事实证明,编辑池设置没有效果。我可以回去把池放在NetworkService下,这没关系。

    谢谢你的帮助!非常感谢!!这肯定让我走上了正轨