Erstellen von ganztägigen Ereignissen mithilfe von EWS in Exchange
Erfahren Sie, wie Sie ganztägige Ereignisse mithilfe der verwalteten EWS-API oder EWS in Exchange erstellen.
Ganztägige Ereignisse bieten eine Möglichkeit, etwas darzustellen, das für einen ganzen Tag oder mehrere Tage geschieht, z. B. einen Feiertag oder Urlaubstage. Das Erstellen ganztägiger Ereignisse mit der verwalteten EWS-API oder EWS ist ein Kinderspiel. Es ist genau wie das Erstellen von Terminen, aber mit ein paar kleinen Änderungen.
Festlegen von Start- und Endzeiten
Standardmäßig beginnen ganztägige Ereignisse an einem bestimmten Tag um Mitternacht und enden 24 Stunden (oder ein Vielfaches von 24 Stunden) später. Mit der verwalteten EWS-API und EWS können Sie jedoch andere Zeiten als Mitternacht angeben, wenn Ganztagsereignisse erstellt werden. Dies kann zu unbeabsichtigtem Verhalten führen, wenn Sie nicht wissen, wie diese Zeiten auf dem Server übersetzt werden.
Wenn eine Anforderung empfangen wird, ein neues ganztägiges Ereignis mit Start- und/oder Endzeiten ohne Mitternacht (in der Zeitzone der Anforderung oder des Termins) zu erstellen, werden diese Zeiten gemäß den folgenden Regeln auf Mitternacht in der entsprechenden Zeitzone angepasst:
- Startzeiten außerhalb von Mitternacht werden an die Mitternacht vor der angegebenen Zeit angepasst. Beispielsweise wird 13:00 Uhr am 6. Juni auf 12:00 Uhr am 6. Juni angepasst.
- Endzeiten außerhalb von Mitternacht werden an die Mitternacht nach der angegebenen Zeit angepasst. Beispielsweise wird 13:00 Uhr am 6. Juni auf 12:00 Uhr am 7. Juni angepasst.
Das ganztägige Ereignis, das Sie erstellen, ist also immer einschließlich der von Ihnen angegebenen Start- und Endzeit, kann aber aufgrund der Verschiebung nach Mitternacht zusätzliche Zeit im Kalender des Benutzers beanspruchen. Da der Server die Start- und Endzeit auf Mitternacht anpasst, empfiehlt es sich, die Start- und Endzeit um Mitternacht anzugeben, um unbeabsichtigte Änderungen an den Zeiten zu vermeiden.
Es ist auch wichtig, zeitzonen beim Erstellen ganztägiger Ereignisse zu berücksichtigen. Da der Exchange-Server eine Mitternachtsstart- und Endzeit in der Zeitzone der Anforderung oder des Termins erzwingt, kann das Anzeigen dieses ganztägigen Ereignisses in einem Client, der für eine andere Zeitzone konfiguriert ist, zu unerwarteten Ergebnissen führen. Je nach Client kann es als ganztägiges Ereignis mit zusätzlichen Tagen erscheinen, die Sie nicht einschließen möchten, oder es wird möglicherweise nicht als ganztägiges Ereignis angezeigt. Daher wird empfohlen, beim Erstellen ganztägiger Ereignisse nach Möglichkeit die bevorzugte Zeitzone des Benutzers zu verwenden.
Erstellen eines ganztägigen Ereignisses mithilfe der verwalteten EWS-API
Das folgende Beispiel zeigt, wie Sie mit der verwalteten EWS-API ein ganztägiges Ereignis erstellen, das an dem durch den startDate-Parameter angegebenen Datum beginnt und für die Anzahl von Tagen gültig ist, die durch den numDays-Parameter angegeben wird. Beachten Sie, dass der Termin in der durch die ExchangeService.TimeZone-Eigenschaft angegebenen Zeitzone erstellt wird. In diesem Beispiel wird davon ausgegangen, dass das exchangeService-Objekt , das im Dienstparameter übergeben wird, mit gültigen Werten für die Eigenschaften Credentials und URL initialisiert wurde.
static void CreateAllDayAppointment(ExchangeService service, DateTime startDate, int numDays)
{
// Best practice is to set the start date to midnight
// on the first day of the all-day event.
DateTime startDateMidnight = startDate.Date;
// The end date should be midnight on the first day
// after the event.
DateTime endDateMidnight = startDateMidnight.AddDays(numDays);
Appointment allDayEvent = new Appointment(service);
// Set IsAllDayEvent to true.
allDayEvent.IsAllDayEvent = true;
// Set other properties.
allDayEvent.Subject = "Vacation";
allDayEvent.LegacyFreeBusyStatus = LegacyFreeBusyStatus.OOF;
allDayEvent.Start = startDateMidnight;
allDayEvent.End = endDateMidnight;
// Save the appointment.
try
{
allDayEvent.Save(WellKnownFolderName.Calendar, SendInvitationsMode.SendToNone);
Console.WriteLine("All day event created.");
}
catch (Exception ex)
{
Console.WriteLine("Error saving all day event: {0}", ex.Message);
}
}
Erstellen eines ganztägigen Ereignisses mithilfe von EWS
Das folgende Beispiel zeigt eine EWS CreateItem-Vorgangsanforderung zum Erstellen eines ganztägigen Ereignisses. Der Termin wird in der Zeitzone Eastern erstellt, wie durch das TimeZoneContext-Element angegeben. Beachten Sie, dass der Zeitteil der Werte der Elemente Start und End beide 04:00Z ist, was während der Sommerzeit in mitternacht in der Zeitzone Eastern konvertiert wird.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2007_SP1" />
<t:TimeZoneContext>
<t:TimeZoneDefinition Id="Eastern Standard Time" />
</t:TimeZoneContext>
</soap:Header>
<soap:Body>
<m:CreateItem SendMeetingInvitations="SendToNone">
<m:SavedItemFolderId>
<t:DistinguishedFolderId Id="calendar" />
</m:SavedItemFolderId>
<m:Items>
<t:CalendarItem>
<t:Subject>Vacation</t:Subject>
<t:Start>2014-06-09T04:00:00.000Z</t:Start>
<t:End>2014-06-10T04:00:00.000Z</t:End>
<t:IsAllDayEvent>true</t:IsAllDayEvent>
<t:LegacyFreeBusyStatus>OOF</t:LegacyFreeBusyStatus>
</t:CalendarItem>
</m:Items>
</m:CreateItem>
</soap:Body>
</soap:Envelope>