EWS: verifique se o compromisso do calendário é cancelado [fechado]

5

Estou tentando consultar o EWS com VB.Net e posso recuperar a maioria dos atributos para um compromisso que desejo. No entanto, quando estou tentando recuperar o atributo IsCancelled, a seguinte exceção está sendo encontrada: This property was requested, but it wasn't returned by the server.

Alguém é capaz de avisar se houver algum problema com o atributo IsCancelled (ou seja, é sempre definido como verdadeiro ou falso)?

Nosso ambiente é misto, o EWS está sendo executado no Exchange 2007SP1, no entanto, temos 2010 servidores (prestes a embarcar na atualização em um mês ou mais).

Alguém pode apontar-me para quaisquer recursos em todos os atributos disponíveis através do EWS, a lista é longa e eu tenho certeza que existem outras jóias úteis que eu ainda não encontrei.

Quaisquer recursos para rastrear compromissos na configuração de caixas de correio como recursos (usando salas em 2010, mas ainda não existentes), como Reuniões canceladas e atualizadas, serão muito bem-vindos.

Obrigado,

Matt

    
por Lima 05.09.2011 / 11:10

2 respostas

3

De acordo com o documentação da propriedade , é um tipo bool e não Nullable<bool> , então deve sempre retornar algo.

O fato de você receber a mensagem This property was requested, but it wasn't returned by the server pode sugerir que você esteja solicitando uma propriedade inadequada para o item retornado (por exemplo, pedindo a propriedade isCancelled em um tipo EmailMessage .

O que eu faço é uma simples verificação de integridade e verifique se sua lista de itens retornados é do tipo Appointment e não de outra coisa.

Você pode tentar chamar o método FindAppointments da classe ExchangeService , que procurará exclusivamente itens que são compromissos, mas eu pessoalmente tive alguns problemas com o fato de não retornar exatamente o que eu esperava. O que acabei fazendo foi chamar FindItems<Appointment>(WellKnownFolderName.Calendar, new ItemView(1000)) e passar por cima desses.

    
por 06.09.2011 / 13:48
1

Após uma boa quantidade de tentativa e erro, descobri que você também precisa solicitar a propriedade AppointmentSchema.AppointmentState quando quiser a propriedade AppointmentSchema.IsCancelled .

Aqui está o código que tenho:

var calendarView = new CalendarView(startTime, endTime);
var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(room.Email.Address));
calendarView.PropertySet = new PropertySet(
    // AppointmentState is required for IsCancelled to work
    AppointmentSchema.AppointmentState,
    AppointmentSchema.IsCancelled
);
var roomBookings = exchangeService.FindAppointments(folderId, calendarView);
    
por 24.09.2015 / 13:22