请求用户的日历可用性详细信息时,Exchange 2010模拟会出现问题

时间:2011-07-29 00:31:21

标签: calendar exchange-server impersonation exchangewebservices

我正在开展项目,其中外部应用程序正在尝试获取可用性信息(空闲/忙碌)以及Exchange 2010中用户组的详细信息(位置/主题/等)。

我已经阅读了足够的内容,我认为最好的方法是通过应用程序运行的服务帐户冒充有问题的用户并撤回他们的日历信息。

我已经为服务帐户设置了模拟并运行了我在technet上找到的基本测试:http://msdn.microsoft.com/en-us/library/bb204088(v=exchg.140).aspx

这适用于拉回邮箱文件夹(作为示例),如果尝试拉回日历文件夹。

我还发现了如何通过technet获取可用性: http://msdn.microsoft.com/en-us/library/aa563800(v=exchg.140).aspx 如果我以我正在尝试查找日历信息的用户身份登录,这也将有效。

当我尝试将模拟XML与获取可用性结合起来时,问题出现了。以下是我对这两个组合的要求:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
           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>
<t:ExchangeImpersonation>
  <t:ConnectingSID>
    <t:PrincipalName>[usersname@myorg.org]</t:PrincipalName>
  </t:ConnectingSID>
</t:ExchangeImpersonation>
</soap:Header>
  <soap:Body> 
   <GetUserAvailabilityRequest xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> 
  <t:TimeZone xmlns="http://schemas.microsoft.com/exchange/services/2006/types"> 
      <Bias>300</Bias> 
      <StandardTime> 
        <Bias>0</Bias> 
        <Time>02:00:00</Time> 
        <DayOrder>1</DayOrder> 
        <Month>11</Month> 
        <DayOfWeek>Sunday</DayOfWeek> 
      </StandardTime> 
       <DaylightTime> 
         <Bias>-60</Bias> 
         <Time>02:00:00</Time> 
         <DayOrder>2</DayOrder> 
         <Month>3</Month> 
         <DayOfWeek>Sunday</DayOfWeek> 
       </DaylightTime> 
     </t:TimeZone> 
     <MailboxDataArray> 
        <t:MailboxData> 
          <t:Email> 
            <t:Address>[usersname@myorg.org]</t:Address> 
          </t:Email> 
          <t:AttendeeType>Required</t:AttendeeType>
          <t:ExcludeConflicts>false</t:ExcludeConflicts> 
        </t:MailboxData> 
      </MailboxDataArray> 
      <t:FreeBusyViewOptions> 
        <t:TimeWindow> 
          <t:StartTime>2011-07-28T00:00:00</t:StartTime> 
          <t:EndTime>2011-07-28T23:59:59</t:EndTime> 
        </t:TimeWindow> 
        <t:MergedFreeBusyIntervalInMinutes>5</t:MergedFreeBusyIntervalInMinutes> 
        <t:RequestedView>DetailedMerged</t:RequestedView> 
      </t:FreeBusyViewOptions> 
    </GetUserAvailabilityRequest> 
  </soap:Body> 
</soap:Envelope>

我得到的是:

<?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:ErrorProxyRequestNotAllowed</faultcode>
      <faultstring xml:lang="en-US">Client context header found but no request type found in SOAP header.</faultstring>
      <detail>
        <m:ErrorCode xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages">5015</m:ErrorCode>
      </detail>
    </s:Fault>
  </s:Body>
</s:Envelope>

在technet中挖掘更多内容,ErrorProxyRequestNotAllowed信息: “此错误表示Exchange Web服务在尝试满足GetUserAvailability请求时发送到另一个客户端访问服务器的请求无效。此响应代码通常表示发生了配置或权限错误,或者有人尝试模拟可用性时未成功代理请求。“

我遇到的问题是,在我撤回用户的邮件和日历文件夹的情况下,模仿似乎是如何工作的,但是在我想检查其可用性的情况下却无法工作。

现在,我只是通过curl发送直接的XML(用一个小的python脚本包装)。

任何人都有任何指示?提前谢谢!

1 个答案:

答案 0 :(得分:0)

我终于找到了一些(旧的)引用,这是GetUser [blank]请求样式调用和模拟的已知功能/错误。 这两个人根本不合作。我希望这能节省一点时间。