2016-01-17 1 views
1

Я продолжаю получать ошибки ErrorSchemaValidation, пытаясь установить множество типов флагов в электронном письме с помощью веб-служб Exchange с помощью SOAP (операция UpdateItem). Вот пример такой ошибки:ErrorSchemaВысокая ошибка установки флажка в электронной почте с EWS SOAP

<?xml version="1.0" encoding="utf-8"?> 
 
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
 
    <s:Body> 
 
    <s:Fault> 
 
     <faultcode xmlns:a="http://schemas.microsoft.com/exchange/services/2006/types">a:ErrorSchemaValidation</faultcode> 
 
     <faultstring xml:lang="en-US">The request failed schema validation: The 'PropertyTag' attribute is invalid - The value '802A' is invalid according to its datatype 'http://schemas.microsoft.com/exchange/services/2006/types:PropertyTagType' - The value '802A' is not valid according to any of the memberTypes of the union.</faultstring> 
 
     <detail> 
 
     <e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorSchemaValidation</e:ResponseCode> 
 
     <e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The request failed schema validation.</e:Message> 
 
     <t:MessageXml xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> 
 
      <t:LineNumber>1</t:LineNumber> 
 
      <t:LinePosition>1340</t:LinePosition> 
 
      <t:Violation>The 'PropertyTag' attribute is invalid - The value '802A' is invalid according to its datatype 'http://schemas.microsoft.com/exchange/services/2006/types:PropertyTagType' - The value '802A' is not valid according to any of the memberTypes of the union.</t:Violation> 
 
     </t:MessageXml> 
 
     </detail> 
 
    </s:Fault> 
 
    </s:Body> 
 
</s:Envelope>

И вот мой запрос, в соответствии с добавлением простой цветной флаг в соответствии со спецификацией: https://msdn.microsoft.com/en-us/library/ee204317(v=exchg.80).aspx:

<?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:xsd="http://www.w3.org/2001/XMLSchema"    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"    xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> 
 
    <soap:Header> 
 
    <RequestServerVersion Version="Exchange2013" xmlns="http://schemas.microsoft.com/exchange/services/2006/types"/> 
 
    </soap:Header> 
 
    <soap:Body> 
 
    <m:UpdateItem MessageDisposition="SaveOnly" ConflictResolution="AlwaysOverwrite"> 
 
     <m:ItemChanges> 
 
     <t:ItemChange> 
 
      <t:ItemId Id="AAMkAGUzNmEzYTBmLTI1NDItNGE0My1iZDk5LWFkMDgxODI3YWNlOQBGAAAAAACK2VEhi72QSaw+u0XV7xUHBwAA/rMO2DXYS7rgpZoTIdkqABsXDgCjAAAuH/1UA8tzTYD5jbYriaIUAAIZ7oMeAAA=" /> 
 
      <t:Updates> 
 
      <t:SetItemField> 
 
       <t:ExtendedFieldURI PropertyTag="1095" PropertyType="Integer" /> 
 
       <t:Message> 
 
       <t:ExtendedProperty> 
 
        <t:ExtendedFieldURI PropertyTag="1095" PropertyType="Integer" /> 
 
        <t:Value>6</t:Value> 
 
       </t:ExtendedProperty> 
 
       </t:Message> 
 
      </t:SetItemField> 
 
      <t:SetItemField> 
 
       <t:ExtendedFieldURI PropertyTag="802A" PropertyType="String"/> 
 
       <t:Message> 
 
       <t:ExtendedProperty> 
 
        <t:ExtendedFieldURI PropertyTag="802A" PropertyType="String"/> 
 
        <t:Value>Follow up</t:Value> 
 
       </t:ExtendedProperty> 
 
       </t:Message> 
 
      </t:SetItemField> 
 
      <t:SetItemField> 
 
       <t:ExtendedFieldURI PropertyTag="83C0" PropertyType="Integer" /> 
 
       <t:Message> 
 
       <t:ExtendedProperty> 
 
        <t:ExtendedFieldURI PropertyTag="83C0" PropertyType="Integer" /> 
 
        <t:Value>3</t:Value> 
 
       </t:ExtendedProperty> 
 
       </t:Message> 
 
      </t:SetItemField> 
 
      <t:SetItemField> 
 
       <t:ExtendedFieldURI PropertyTag="83CA" PropertyType="SystemTime" /> 
 
       <t:Message> 
 
       <t:ExtendedProperty> 
 
        <t:ExtendedFieldURI PropertyTag="83CA" PropertyType="SystemTime" /> 
 
        <t:Value>2016-01-17T03:56:50.972Z</t:Value> 
 
       </t:ExtendedProperty> 
 
       </t:Message> 
 
      </t:SetItemField> 
 
      <t:SetItemField> 
 
       <t:ExtendedFieldURI PropertyTag="1090" PropertyType="Integer" /> 
 
       <t:Message> 
 
       <t:ExtendedProperty> 
 
        <t:ExtendedFieldURI PropertyTag="1090" PropertyType="Integer" /> 
 
        <t:Value>2</t:Value> 
 
       </t:ExtendedProperty> 
 
       </t:Message> 
 
      </t:SetItemField> 
 
      <t:SetItemField> 
 
       <t:ExtendedFieldURI PropertyTag="0C17" PropertyType="Boolean" /> 
 
       <t:Message> 
 
       <t:ExtendedProperty> 
 
        <t:ExtendedFieldURI PropertyTag="0C17" PropertyType="Boolean" /> 
 
        <t:Value>True</t:Value> 
 
       </t:ExtendedProperty> 
 
       </t:Message> 
 
      </t:SetItemField> 
 
      <t:SetItemField> 
 
       <t:ExtendedFieldURI PropertyTag="0063" PropertyType="Boolean" /> 
 
       <t:Message> 
 
       <t:ExtendedProperty> 
 
        <t:ExtendedFieldURI PropertyTag="0063" PropertyType="Boolean" /> 
 
        <t:Value>True</t:Value> 
 
       </t:ExtendedProperty> 
 
       </t:Message> 
 
      </t:SetItemField> 
 
      </t:Updates> 
 
     </t:ItemChange> 
 
     </m:ItemChanges> 
 
    </m:UpdateItem> 
 
    </soap:Body> 
 
</soap:Envelope>

Я начал с установки временного флага (согласно спецификации cification: https://msdn.microsoft.com/en-us/library/ee201784(v=exchg.80).aspx), но я получал ту же ошибку проверки схемы. Я попытался удалить различные свойства из запроса, но это не имело значения - это просто ошибка в другом поле. Поэтому я пытаюсь упростить только с помощью цветового флага, поскольку флаги времени довольно сложны, и я просто хочу проверить, что это можно сделать в первую очередь.

Что я делаю неправильно?

ответ

2

Свойства, которые вы пытаетесь установить в диапазоне 0x8000, называются свойствами, и вы пытаетесь использовать их, как тегированные свойства, которые не будут работать (у вас также отсутствует 0x перед значением шестнадцатеричного тега). Вы должны определить и использовать эти свойства, как

<t:Updates> 
 
    <t:SetItemField> 
 
    <t:ExtendedFieldURI DistinguishedPropertySetId="Common" PropertyId="34096" PropertyType="String" /> 
 
    <t:Message> 
 
     <t:ExtendedProperty> 
 
     <t:ExtendedFieldURI DistinguishedPropertySetId="Common" PropertyId="34096" PropertyType="String" /> 
 
     <t:Value>Follow up</t:Value> 
 
     </t:ExtendedProperty> 
 
    </t:Message> 
 
    </t:SetItemField> 
 
    <t:SetItemField> 
 
    <t:ExtendedFieldURI PropertyTag="4245" PropertyType="Integer" /> 
 

 
    <t:Message> 
 
     <t:ExtendedProperty> 
 
     <t:ExtendedFieldURI PropertyTag="4245" PropertyType="Integer" /> 
 
     <t:Value>6</t:Value> 
 
     </t:ExtendedProperty> 
 
    </t:Message> 
 
    </t:SetItemField> 
 
    <t:SetItemField> 
 
    <t:ExtendedFieldURI PropertyTag="4240" PropertyType="Integer" /> 
 

 
    <t:Message> 
 
     <t:ExtendedProperty> 
 
     <t:ExtendedFieldURI PropertyTag="4240" PropertyType="Integer" /> 
 
     <t:Value>2</t:Value> 
 
     </t:ExtendedProperty> 
 
    </t:Message> 
 
    </t:SetItemField> 
 
    <t:SetItemField> 
 
    <t:ExtendedFieldURI PropertyTag="3627" PropertyType="Integer" /> 
 

 
    <t:Message> 
 
     <t:ExtendedProperty> 
 
     <t:ExtendedFieldURI PropertyTag="3627" PropertyType="Integer" /> 
 
     <t:Value>1</t:Value> 
 
     </t:ExtendedProperty> 
 
    </t:Message> 
 
    </t:SetItemField> 
 
    <t:SetItemField> 
 
    <t:ExtendedFieldURI DistinguishedPropertySetId="Common" PropertyId="34208" PropertyType="SystemTime" /> 
 
    <t:Message> 
 
     <t:ExtendedProperty> 
 
     <t:ExtendedFieldURI DistinguishedPropertySetId="Common" PropertyId="34208" PropertyType="SystemTime" /> 
 
     <t:Value>2016-01-19T12:24:28.320+11:00</t:Value> 
 
     </t:ExtendedProperty> 
 
    </t:Message> 
 
    </t:SetItemField> 
 
    <t:SetItemField> 
 
    <t:ExtendedFieldURI DistinguishedPropertySetId="Task" PropertyId="33028" PropertyType="SystemTime" /> 
 
    <t:Message> 
 
     <t:ExtendedProperty> 
 
     <t:ExtendedFieldURI DistinguishedPropertySetId="Task" PropertyId="33028" PropertyType="SystemTime" /> 
 
     <t:Value>2016-01-18T12:24:28.320+11:00</t:Value> 
 
     </t:ExtendedProperty> 
 
    </t:Message> 
 
    </t:SetItemField> 
 
    <t:SetItemField> 
 
    <t:ExtendedFieldURI DistinguishedPropertySetId="Task" PropertyId="33029" PropertyType="SystemTime" /> 
 
    <t:Message> 
 
     <t:ExtendedProperty> 
 
     <t:ExtendedFieldURI DistinguishedPropertySetId="Task" PropertyId="33029" PropertyType="SystemTime" /> 
 
     <t:Value>2016-01-19T12:24:28.320+11:00</t:Value> 
 
     </t:ExtendedProperty> 
 
    </t:Message> 
 
    </t:SetItemField> 
 
    <t:SetItemField> 
 
    <t:ExtendedFieldURI DistinguishedPropertySetId="Common" PropertyId="34070" PropertyType="SystemTime" /> 
 
    <t:Message> 
 
     <t:ExtendedProperty> 
 
     <t:ExtendedFieldURI DistinguishedPropertySetId="Common" PropertyId="34070" PropertyType="SystemTime" /> 
 
     <t:Value>2016-01-17T13:00:00.000Z</t:Value> 
 
     </t:ExtendedProperty> 
 
    </t:Message> 
 
    </t:SetItemField> 
 
    <t:SetItemField> 
 
    <t:ExtendedFieldURI DistinguishedPropertySetId="Common" PropertyId="34071" PropertyType="SystemTime" /> 
 
    <t:Message> 
 
     <t:ExtendedProperty> 
 
     <t:ExtendedFieldURI DistinguishedPropertySetId="Common" PropertyId="34071" PropertyType="SystemTime" /> 
 
     <t:Value>2016-01-17T13:00:00.000Z</t:Value> 
 
     </t:ExtendedProperty> 
 
    </t:Message> 
 
    </t:SetItemField> 
 
</t:Updates>

Также в обмене 2013 есть строго типизированное свойство для флагов, так что вы можете установить большую часть времени расширенных свойств для флагов, способ например

<t:Updates> 
 
    <t:SetItemField> 
 
    <t:FieldURI FieldURI="item:Flag" /> 
 
    <t:Message> 
 
     <t:Flag> 
 
     <t:FlagStatus>Flagged</t:FlagStatus> 
 
     <t:StartDate>2016-01-18T01:37:21.626Z</t:StartDate> 
 
     <t:DueDate>2016-01-19T01:37:21.626Z</t:DueDate> 
 
     </t:Flag> 
 
    </t:Message> 
 
    </t:SetItemField> 
 
</t:Updates>

Chee rs Glen

+0

Thanks Glen! Я действительно видел один из ваших ответов на форуме об использовании строго типизированного свойства Flag, но я отказался от него для названных свойств из-за глупой ошибки, которая полностью ввели меня в заблуждение. Я провел день сегодня, возвращаясь к Флагу, и это сработало (я в порядке с использованием Ex2013), но я определенно буду помнить эти советы для использования названного имущества! –

 Смежные вопросы

  • Нет связанных вопросов^_^