Устранение EWS «ErrorAccessDenied» error «Запрошенный веб-метод недоступен для этого вызывающего абонента или приложения» - PullRequest
1 голос
/ 19 апреля 2019

Я создаю надстройку Microsoft Outlook с использованием office.js и веб-службы Exchange. Надстройка выполняет несколько запросов SOAP с использованием Office.context.mailbox.makeEwsRequestAsync (). Во время разработки надстройки настроенные мною запросы SOAP работали нормально. Теперь, когда надстройка использует более широкий круг пользователей, мы видим проблемы с некоторыми вызовами makeEwsRequestAsync. Примечательно, что журналы ошибок показывают ответ:

<?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:ErrorAccessDenied</faultcode>
      <faultstring xml:lang="en-US">The requested web method is unavailable to this caller or application.</faultstring>
      <detail>
        <e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorAccessDenied</e:ResponseCode>
        <e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The requested web method is unavailable to this caller or application.</e:Message>
      </detail>
    </s:Fault>
  </s:Body>
</s:Envelope>

Запросы, которые возвращают это:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" 
   xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
        <soap:Header>
                <t:RequestServerVersion Version="Exchange2010" />
        </soap:Header>
        <soap:Body>
                <m:ResolveNames ReturnFullContactData="true" SearchScope="ContactsActiveDirectory">
                        <m:UnresolvedEntry>smtp</m:UnresolvedEntry>
                </m:ResolveNames>
        </soap:Body>
</soap:Envelope>

и

<?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="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2007_SP1"/>
  </soap:Header>
  <soap:Body>
    <m:GetUserAvailabilityRequest>
      <t:TimeZone xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
        <Bias>480</Bias>
        <StandardTime>
          <Bias>0</Bias>
          <Time>02:00:00</Time>
          <DayOrder>5</DayOrder>
          <Month>10</Month>
          <DayOfWeek>Sunday</DayOfWeek>
        </StandardTime>
        <DaylightTime>
          <Bias>-60</Bias>
          <Time>02:00:00</Time>
          <DayOrder>1</DayOrder>
          <Month>4</Month>
          <DayOfWeek>Sunday</DayOfWeek>
        </DaylightTime>
      </t:TimeZone>
      <m:MailboxDataArray>
        <t:MailboxData>
          <t:Email>
            <t:Address>user1234@example.com</t:Address>
          </t:Email>
          <t:AttendeeType>Required</t:AttendeeType>
          <t:ExcludeConflicts>false</t:ExcludeConflicts>
        </t:MailboxData>
      </m:MailboxDataArray>
      <t:FreeBusyViewOptions>
        <t:TimeWindow>
          <t:StartTime>2019-04-21T17:00:00</t:StartTime>
          <t:EndTime>2019-04-23T16:59:59</t:EndTime>
        </t:TimeWindow>
        <t:MergedFreeBusyIntervalInMinutes>30</t:MergedFreeBusyIntervalInMinutes>
        <t:RequestedView>FreeBusy</t:RequestedView>
      </t:FreeBusyViewOptions>
    </m:GetUserAvailabilityRequest>
  </soap:Body>
</soap:Envelope>

При выполнении этих запросов из моих тестовых учетных записей они не возвращают ответ об ошибке и работают нормально. Я подозреваю, что пользователи, получающие эту ошибку, используют версию Outlook, управляемую их ИТ-отделом, и ошибки связаны с безопасностью. Я недостаточно знаком с тем, как Outlook или серверы Exchange настроены в отношении того, как это влияет на запросы makeEwsRequestAsync () для поиска решения этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...