使用EWS创建约会时的例外情况

时间:2017-06-30 15:47:31

标签: c# exchangewebservices

使用我的服务EWS时出现异常,这是我的代码

public class ExchangeHelper
{
    ExchangeService exchangeService;

    public ExchangeHelper()
    {
        //Instantiate a new ExchangeService object
        exchangeService = new ExchangeService(ExchangeVersion.Exchange2010_SP2);

        //Set the exchange WebService URL
        exchangeService.Url = new Uri("https://hostname/EWS/Exchange.asmx");
        //exchangeService.Url = new Uri("https://hostname/EWS/Exchange.asmx");

        //Set the credentials of the service to the credentials
        //that are associated with the impersonating account.
        exchangeService.Credentials = new NetworkCredential(
                                        "user",
                                        "pass",
                                        "Domain.com"
                                            );

    }

    public void CreateAppointment()
    {
        var emailAddress = "user@doamin.com";
        //Set the ImpersonatedUserId property of the ExchangeService object to identify the impersonated user (target account).
        //This example uses the user's SMTP email address.
        exchangeService.AutodiscoverUrl(emailAddress);
        exchangeService.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, emailAddress);

        //create a new appointment object
        Appointment appointment = new Appointment(exchangeService);

        //set appointment properties
        appointment.Subject = "test";
        appointment.Body = "testBody";

        //In MSDN it says that if you dont specify the timezone, it will use the UTC timezone
        //but in reality it is not working that way.
        //so explicity setting the EST timezone


        appointment.StartTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
        appointment.Start = DateTime.Now;
        appointment.EndTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
        appointment.End = DateTime.Now.AddHours(1);

        //add required participants
        appointment.RequiredAttendees.Add(emailAddress);


        newFolder.Save(WellKnownFolderName.Inbox);



         appointment.Save(new FolderId(WellKnownFolderName.Drafts, "emailAddress"));

         //Set it back to null so that any actions that will be taken using the exchange service
         //applies to impersonating account (i.e.account used in network credentials)
         exchangeService.ImpersonatedUserId = null;

         return the unique identifier that is created
         return appointment.Id.UniqueId;
     }

例外 “该帐户无权模拟所请求的用户”

1 个答案:

答案 0 :(得分:0)

您的帖子中没有100%明确表示您用于ExchangeService和ImpersonationUserId上的凭据的帐户是否相同。如果是,那么您不需要使用模拟,也不应该设置该属性。似乎一个应该能够冒充自己,但是没有必要这样做,因此EWS可能会让你退回那个例外。

如果它们不同,那么它就像消息所说的那样:您用于凭据的帐户必须有权模仿您设置的用户。这通常涉及Exchange管理员设置的一些PowerShell魔法。