C# GetUserAvailabilityResults在Exchange web服务中显示工作时间以外的结果

C# GetUserAvailabilityResults在Exchange web服务中显示工作时间以外的结果,c#,calendar,exchangewebservices,exchange-server-2010,C#,Calendar,Exchangewebservices,Exchange Server 2010,GetUserAvailabilityResults显示Exchange web服务工作时间以外的结果,尽管我已将每日非工作时间建议的最大值设置为=0 另外,我想知道如何获取和设置工作时间。此外,results.AttendeesAvailability返回null private static void GetSuggestedMeetingTimes(ExchangeService service) { // Create a list of attendee

GetUserAvailabilityResults显示Exchange web服务工作时间以外的结果,尽管我已将每日非工作时间建议的最大值设置为=0 另外,我想知道如何获取和设置工作时间。此外,results.AttendeesAvailability返回null

    private static void GetSuggestedMeetingTimes(ExchangeService service)
    {
        // Create a list of attendees.
        List<AttendeeInfo> attendees = new List<AttendeeInfo>();
        attendees.Add(new AttendeeInfo()
        {
            SmtpAddress = "vrr@e.edu.sa",
            AttendeeType = MeetingAttendeeType.Organizer
        });
        attendees.Add(new AttendeeInfo()
        {                
            SmtpAddress = "abc@e.edu.sa",
            AttendeeType = MeetingAttendeeType.Required
        });

        AvailabilityOptions meetingOptions = new AvailabilityOptions();
        meetingOptions.MeetingDuration = 30;
        meetingOptions.MaximumNonWorkHoursSuggestionsPerDay = 0;
        meetingOptions.GoodSuggestionThreshold = 49;
        meetingOptions.MinimumSuggestionQuality = SuggestionQuality.Good;
        meetingOptions.DetailedSuggestionsWindow = new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2));
        meetingOptions.MaximumSuggestionsPerDay = 48;

        // Return a set of of suggested meeting times. 
        GetUserAvailabilityResults results = service.GetUserAvailability(attendees,
                                                                             new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2)),
                                                                                 AvailabilityData.Suggestions,
                                                                                 meetingOptions); 

      //  Console.WriteLine(results.AttendeesAvailability[0].WorkingHours.EndTime); 
        // Display available meeting times.
        Console.WriteLine("Availability for {0} and {1}", attendees[0].SmtpAddress, attendees[0].SmtpAddress);
        Console.WriteLine();

        //foreach (AttendeeAvailability aa in results.AttendeesAvailability)
        //{
        //    //Console.WriteLine(aa.Result.Date);
        //    Console.WriteLine(aa.CalendarEvents.Count);
        //}
        foreach (Suggestion suggestion in results.Suggestions)
        {
            Console.WriteLine(suggestion.Date);
            Console.WriteLine();
            foreach (TimeSuggestion timeSuggestion in suggestion.TimeSuggestions)
            {
                Console.WriteLine("Suggested meeting time:" + timeSuggestion.MeetingTime);
                Console.WriteLine();
            }
        }
    }
private static void GetSuggestedMeetingTimes(ExchangeService服务)
{
//创建与会者列表。
列表与会者=新列表();
添加(新与会者信息()
{
SmtpAddress=”vrr@e.edu.sa",
AttendeType=MeetingAttendeType.Organizer
});
添加(新与会者信息()
{                
SmtpAddress=”abc@e.edu.sa",
AttendeType=MeetingAttendeType。必填项
});
AvailabilityOptions meetingOptions=新的AvailabilityOptions();
meetingOptions.MeetingDuration=30;
meetingOptions.MaximumNonWorkHoursSuggestionsPerDay=0;
meetingOptions.GoodSuggestionThreshold=49;
meetingOptions.MinimumSuggestionQuality=SuggestionQuality.Good;
meetingOptions.DetailedSuggestionsWindow=新的时间窗口(DateTime.Now,DateTime.Now.AddDays(2));
meetingOptions.MaximumSuggestionsPerDay=48;
//返回一组建议的会议时间。
GetUserAvailabilityResults results=service.GetUserAvailability(与会者,
新的时间窗口(DateTime.Now,DateTime.Now.AddDays(2)),
可用性数据。建议,
会议选择);
//Console.WriteLine(results.AttendeesAvailability[0]。WorkingHours.EndTime);
//显示可用的会议时间。
Console.WriteLine(“对{0}和{1}的可用性”,与会者[0]。SmtpAddress,与会者[0]。SmtpAddress);
Console.WriteLine();
//foreach(结果中的AttendeesAvailability.AttendeesAvailability)
//{
////Console.WriteLine(aa.Result.Date);
//Console.WriteLine(aa.CalendarEvents.Count);
//}
foreach(结果中的建议。建议)
{
Console.WriteLine(建议日期);
Console.WriteLine();
foreach(TimeSuggestion TimeSuggestion in suggestion.TimeSuggestions)
{
Console.WriteLine(“建议的会议时间:+timeSuggestion.MeetingTime”);
Console.WriteLine();
}
}
}

作为交换,为每个用户分别维护工作时间。每个用户都可以有自己的工作时间。(虽然对于一个组织中的员工来说这似乎不合理)

GetUserAvailabilityResults在工作时间之外提供建议,因为与会者的一个工作时间与另一个不同

您不能为用户设置工作时间(据我所知),但是每个用户都可以使用outlook更改工作时间

您可以使用results.AttendeesAvailability查看每位与会者的工作时间

results.AttendesAvailability如果AvailabilityData.FreeBus和dSuggestions而不是AvailabilityData.Suggestions,则不会给出null 使用 下面是修改后的代码

 private static void GetSuggestedMeetingTimes(ExchangeService service)
    {
        // Create a list of attendees.
        List<AttendeeInfo> attendees = new List<AttendeeInfo>();
        attendees.Add(new AttendeeInfo()
        {
            SmtpAddress = "shomaail@kfupm.edu.sa",
            AttendeeType = MeetingAttendeeType.Required,
            ExcludeConflicts = false
        });
        attendees.Add(new AttendeeInfo()
        {                
            SmtpAddress = "vrr@kfupm.edu.sa",
            AttendeeType = MeetingAttendeeType.Required
        });

        AvailabilityOptions meetingOptions = new AvailabilityOptions();
        meetingOptions.MeetingDuration = 30;
        meetingOptions.MaximumNonWorkHoursSuggestionsPerDay = 0;
        meetingOptions.GoodSuggestionThreshold = 49;
        meetingOptions.MinimumSuggestionQuality = SuggestionQuality.Excellent;
        meetingOptions.DetailedSuggestionsWindow = new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2));
        meetingOptions.MaximumSuggestionsPerDay = 48;

        // Return a set of of suggested meeting times. 
        GetUserAvailabilityResults results = service.GetUserAvailability(attendees,
                                                                             new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2)),
                                                                                 AvailabilityData.FreeBusyAndSuggestions,
                                                                                 meetingOptions); 

      //  Console.WriteLine(results.AttendeesAvailability[0].WorkingHours.EndTime); 
        // Display available meeting times.
        Console.WriteLine("Availability for {0} and {1}", attendees[0].SmtpAddress, attendees[1].SmtpAddress);
        Console.WriteLine();

        foreach (AttendeeAvailability aa in results.AttendeesAvailability)
        {
            Console.WriteLine("=============================================");
            Console.WriteLine(aa.Result.ToString());
            Console.WriteLine(aa.ViewType.ToString());
            Console.WriteLine(aa.CalendarEvents.Count);
            Console.WriteLine(aa.WorkingHours.StartTime);
            Console.WriteLine(aa.WorkingHours.EndTime);
            Console.WriteLine(aa.WorkingHours.DaysOfTheWeek.Count);
            Console.WriteLine(aa.WorkingHours.DaysOfTheWeek[0]);
            Console.WriteLine(aa.WorkingHours.DaysOfTheWeek[aa.WorkingHours.DaysOfTheWeek.Count-1]);
            foreach (DayOfTheWeek dow in aa.WorkingHours.DaysOfTheWeek)
            {
                Console.WriteLine(dow);
            }
        }
        foreach (Suggestion suggestion in results.Suggestions)
        {
            Console.WriteLine(suggestion.Date);
            Console.WriteLine();
            foreach (TimeSuggestion timeSuggestion in suggestion.TimeSuggestions)
            {
                Console.WriteLine("Suggested meeting time:" + timeSuggestion.MeetingTime);
                Console.WriteLine();
            }
        }
    }
private static void GetSuggestedMeetingTimes(ExchangeService服务)
{
//创建与会者列表。
列表与会者=新列表();
添加(新与会者信息()
{
SmtpAddress=”shomaail@kfupm.edu.sa",
AttendeType=MeetingAttendeType。必填,
ExcludeConflicts=false
});
添加(新与会者信息()
{                
SmtpAddress=”vrr@kfupm.edu.sa",
AttendeType=MeetingAttendeType。必填项
});
AvailabilityOptions meetingOptions=新的AvailabilityOptions();
meetingOptions.MeetingDuration=30;
meetingOptions.MaximumNonWorkHoursSuggestionsPerDay=0;
meetingOptions.GoodSuggestionThreshold=49;
meetingOptions.MinimumSuggestionQuality=SuggestionQuality.优秀;
meetingOptions.DetailedSuggestionsWindow=新的时间窗口(DateTime.Now,DateTime.Now.AddDays(2));
meetingOptions.MaximumSuggestionsPerDay=48;
//返回一组建议的会议时间。
GetUserAvailabilityResults results=service.GetUserAvailability(与会者,
新的时间窗口(DateTime.Now,DateTime.Now.AddDays(2)),
AvailabilityData.FreeBus和建议,
会议选择);
//Console.WriteLine(results.AttendeesAvailability[0]。WorkingHours.EndTime);
//显示可用的会议时间。
Console.WriteLine(“对{0}和{1}的可用性”,与会者[0]。SmtpAddress,与会者[1]。SmtpAddress);
Console.WriteLine();
foreach(结果中的AttendeesAvailability.AttendeesAvailability)
{
Console.WriteLine(“================================================================”);
Console.WriteLine(aa.Result.ToString());
Console.WriteLine(aa.ViewType.ToString());
Console.WriteLine(aa.CalendarEvents.Count);
控制台。写入线(aa。工作时间。开始时间);
控制台。写入线(aa。工作时间。结束时间);
Console.WriteLine(aa.工作小时数.工作周数.计数);
Console.WriteLine(aa.工作时间.DaysOfTheWeek[0]);
控制台。写入线(aa.WorkingHo