2010-09-16 88 views
5

在使用C#使用EWS for Exchange 2007創建會議請求時,是否有工作示例?哪些屬性是必需的?我添加了一個Web服務引用,可以連接到創建和發送各種項目,但不斷收到錯誤「設置操作對屬性無效」。在響應消息。它從來不說什麼屬性無效Exchange Web Services創建會議請求工作示例

var ews = new ExchangeServiceBinding { 
    Credentials = new NetworkCredential("user", "pass"), 
    Url = "https://servername/ews/exchange.asmx", 
    RequestServerVersionValue = new RequestServerVersion { 
     Version = ExchangeVersionType.Exchange2007} 
}; 
var startDate = new DateTime(2010, 9, 18, 16, 00, 00); 
var meeting = new CalendarItemType { 
    IsMeeting = true, 
    IsMeetingSpecified = true, 
    Subject = "test EWS", 
    Body = new BodyType {Value = "test body", BodyType1 = BodyTypeType.HTML}, 
    Start = startDate, 
    StartSpecified = true, 
    End = startDate.AddHours(1), 
    EndSpecified = true, 
    MeetingTimeZone = new TimeZoneType{ 
     TimeZoneName = TimeZone.CurrentTimeZone.StandardName, BaseOffset = "PT0H"}, 
    Location = "Meeting", 
    RequiredAttendees = new [] { 
     new AttendeeType{Mailbox =new EmailAddressType{ 
         EmailAddress ="[email protected]",RoutingType = "SMTP"}}, 
     new AttendeeType{Mailbox =new EmailAddressType{ 
         EmailAddress ="[email protected]",RoutingType = "SMTP"}} 
    } 
}; 
var request = new CreateItemType { 
    SendMeetingInvitations = 
     CalendarItemCreateOrDeleteOperationType.SendToAllAndSaveCopy, 
    SendMeetingInvitationsSpecified = true, 
    SavedItemFolderId = new TargetFolderIdType{Item = new DistinguishedFolderIdType{ 
             Id=DistinguishedFolderIdNameType.calendar}}, 
    Items = new NonEmptyArrayOfAllItemsType {Items = new ItemType[] {meeting}} 
}; 
CreateItemResponseType response = ews.CreateItem(request); 
var responseMessage = response.ResponseMessages.Items[0]; 

微軟在提供的消息項目應該是什麼樣子http://msdn.microsoft.com/en-us/library/aa494190(EXCHG.140).aspx一個XML實例。只是設置這些屬性似乎不夠。有人能告訴我我錯過了什麼,或者指點我一些更好的例子或文檔嗎?

<CreateItem 
     xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" 
     SendMeetingInvitations="SendToAllAndSaveCopy" > 
    <SavedItemFolderId> 
    <t:DistinguishedFolderId Id="calendar"/> 
    </SavedItemFolderId> 
    <Items> 
    <t:CalendarItem> 
     <t:Subject>Meeting with attendee0, attendee1, attendee2</t:Subject> 
     <t:Body BodyType="Text">CalendarItem:TextBody</t:Body> 
     <t:Start>2006-06-25T10:00:00Z</t:Start> 
     <t:End>2006-06-25T11:00:00Z</t:End> 
     <t:Location>CalendarItem:Location</t:Location> 
     <t:RequiredAttendees> 
     <t:Attendee> 
      <t:Mailbox> 
      <t:EmailAddress>[email protected]</t:EmailAddress> 
      </t:Mailbox> 
     </t:Attendee> 
     <t:Attendee> 
      <t:Mailbox> 
      <t:EmailAddress>[email protected]</t:EmailAddress> 
      </t:Mailbox> 
     </t:Attendee> 
     </t:RequiredAttendees> 
     <t:OptionalAttendees> 
     <t:Attendee> 
      <t:Mailbox> 
      <t:EmailAddress>[email protected]</t:EmailAddress> 
      </t:Mailbox> 
     </t:Attendee> 
     </t:OptionalAttendees> 
     <t:Resources> 
     <t:Attendee> 
      <t:Mailbox> 
      <t:EmailAddress>[email protected]</t:EmailAddress> 
      </t:Mailbox> 
     </t:Attendee> 
     </t:Resources> 
    </t:CalendarItem> 
    </Items> 
</CreateItem> 

回答

3

這對您來說可能已經太晚了,但對於其他人來說,這可能太晚了。

這個問題似乎與提供Is-Specified參數有關。我刪除了IsMeetingSpecified並且請求起作用。這是修改後的CalendarItemType。

var meeting = new CalendarItemType 
{ 
    IsMeeting = true, 
    Subject = "test EWS", 
    Body = new BodyType { Value = "test body", BodyType1 = BodyTypeType.HTML }, 
    Start = startDate, 
    StartSpecified = true, 
    End = startDate.AddHours(1), 
    EndSpecified = true, 
    MeetingTimeZone = new TimeZoneType 
    { 
     TimeZoneName = TimeZone.CurrentTimeZone.StandardName, 
     BaseOffset = "PT0H" 
    }, 
    Location = "Room 1", 
    RequiredAttendees = new[] { 
     new AttendeeType 
     { 
      Mailbox =new EmailAddressType 
      {  
       EmailAddress ="[email protected]" 
      } 
     }, 
    } 
};