【问题标题】:Exchange 2010 Impersonation trouble when requesting a User's Calendar Availability Details请求用户日历可用性详细信息时出现 Exchange 2010 模拟问题
【发布时间】:2011-10-15 14:13:51
【问题描述】:

我正在处理一个外部应用程序尝试获取 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 与 get 可用性结合起来时,问题就出现了。这是我对这两个组合的看法:

<?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 脚本中)。

有人指点一下吗?提前致谢!

【问题讨论】:

    标签: calendar exchange-server impersonation exchangewebservices


    【解决方案1】:

    我终于找到了一些(旧的)参考,这些参考是 GetUser[blank]Request 样式调用和模拟的已知功能/错误。 两者只是不能一起工作。我希望这可以节省一些时间。

    【讨论】:

    • 谢谢,我想你为我节省了很多时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多