Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[Exchange Web Services] Calendars ophalen werkt niet meer*

Pagina: 1
Acties:

  • f1r3b4ll
  • Registratie: Augustus 2000
  • Laatst online: 12-11 20:09
Hoi allemaal,


Op mijn werk heb ik een applicatie geschreven die de planning voor mijn collega's uit Exchange Server 2007 haalt, en deze door middel van een Flex frontend laat zien.

Helaas werkt de applicatie door onduidelijke redenen van de ene op de andere dag niet meer :'(

Na veel testen kwam ik erachter dat er geen XML meer binnenkomt uit Exchange. De XML bevat een NullReferenceException.

De fout treedt op in regel 66. Ik vermoed dat het met de GetUserAvailability functie te maken heeft.

Mijn code (is C# code, let niet op de PHP tags er omheen, dit was alleen om de highlighting op het forum in te schakelen):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
public int[] getSchedule(string date,string email)
  {
    // Create the binding and set the credentials.
    esb = new ExchangeServiceBinding();
    esb.Credentials = new NetworkCredential("gebruiker", "wachtwoord", "domein");
    esb.Url = @"http://servernaam/EWS/Exchange.asmx";
    esb.RequestServerVersionValue = new RequestServerVersion();
    esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1; 
    int[] output = { };

    // Identify the time to compare free/busy information.
    Duration duration = new Duration();
    DateTime startTime = Convert.ToDateTime(date);
    DateTime endTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, 18, 0, 0);
    duration.StartTime = startTime;
    duration.EndTime = endTime;

    // Identify the options for comparing free/busy information.
    FreeBusyViewOptionsType fbViewOptions = new FreeBusyViewOptionsType();
    fbViewOptions.TimeWindow = duration;
    fbViewOptions.RequestedView = FreeBusyViewType.MergedOnly;
    fbViewOptions.RequestedViewSpecified = true;
    fbViewOptions.MergedFreeBusyIntervalInMinutes = 15;
    fbViewOptions.MergedFreeBusyIntervalInMinutesSpecified = true;

    MailboxData[] mailboxes = new MailboxData[1];
    mailboxes[0] = new MailboxData();

    // Identify the user mailbox to review for free/busy data.
    EmailAddress emailAddress = new EmailAddress();

    emailAddress.Address = email;

    mailboxes[0].Email = emailAddress;
    mailboxes[0].ExcludeConflicts = false;

    // Make the request.
    GetUserAvailabilityRequestType request = new GetUserAvailabilityRequestType();

    // Set the time zone of the request.
    request.TimeZone = new SerializableTimeZone();

    request.TimeZone.Bias = -60;
    request.TimeZone.StandardTime = new SerializableTimeZoneTime();
    request.TimeZone.StandardTime.Bias = 0;
    request.TimeZone.StandardTime.DayOfWeek = DayOfWeekType.Sunday.ToString();
    request.TimeZone.StandardTime.DayOrder = 1;
    request.TimeZone.StandardTime.Month = 11;
    request.TimeZone.StandardTime.Time = "02:00:00";
    request.TimeZone.DaylightTime = new SerializableTimeZoneTime();
    request.TimeZone.DaylightTime.Bias = -60;
    request.TimeZone.DaylightTime.DayOfWeek = DayOfWeekType.Sunday.ToString();
    request.TimeZone.DaylightTime.DayOrder = 2;
    request.TimeZone.DaylightTime.Month = 3;
    request.TimeZone.DaylightTime.Time = "02:00:00";

    // Add the mailboxes to the request.
    request.MailboxDataArray = mailboxes;

    // Add the view options to the request.
    request.FreeBusyViewOptions = fbViewOptions;

    try
    {
      // Send the request and get the response.
      GetUserAvailabilityResponseType response = esb.GetUserAvailability(request);

      // Access free/busy information.
      if (response.FreeBusyResponseArray.Length < 1)
      {
        throw new Exception("No free/busy response data available.");
      }
      else
      {
        foreach (FreeBusyResponseType fbrt in response.FreeBusyResponseArray)
        {
          if (fbrt.ResponseMessage.ResponseClass == ExchangeWebServices.ResponseClassType.Error)
          {
          }
          else
          {
            // Show the free/busy stream.
            FreeBusyView fbv = fbrt.FreeBusyView;
            string input = fbv.MergedFreeBusy;
            output = new int[input.Length];
            for (int i = 0; i < input.Length; i++)
            {
              int status = Convert.ToInt16(input.Substring(i, 1));
              if (i < 2 || (i > 17 && i < 20) || i > 35)
              {
               // if (status == 0 || status == 3)
               // {
                  output[i] = 3;
               // }
              }
              else
              {
                output[i] = status;
              }
            }
          }
        }
      }
    }
    catch (Exception e)
    {
      // Perform error processing.
      HttpContext.Current.Response.Write(e.Message);

    }
    //HttpContext.Current.Response.Write(output.ToString());
    return output;
  }


Het rare is dat deze code altijd heeft gewerkt. Heb ook andere voorbeelden van MSDN geprobeerd en ook bij die voorbeelden komt er geen XML data binnen.

Zou dit aan de Exchange Server (of een specifieke instelling) kunnen liggen? Ik weet het dus echt niet meer (en de systeembeheerder heeft ook geen idee....)

[ Voor 157% gewijzigd door whoami op 13-10-2008 12:01 ]

Daikin 4MXM68A2V1B9 + FTXA50C2V1BB + 2x FTXM25A5V1B + FTXM20A5V1B. SolarEdge 13960 Wp PV array + SE9K inverter


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:43
Op mijn werk heb ik een applicatie geschreven die de planning voor mijn collega's uit Exchange Server 2007 haalt, en deze door middel van een Flex frontend laat zien.

Helaas werkt de applicatie door onduidelijke redenen van de ene op de andere dag niet meer :'(

Na veel testen kwam ik erachter dat er geen XML meer binnenkomt uit Exchange. De XML bevat een NullReferenceException.

De fout treedt op in regel 66. Ik vermoed dat het met de GetUserAvailability functie te maken heeft.
Heb je eigenlijk zelf al wat verder gedebugged ? Kijken wat je stuurt, wat je terugkrijgt , evt in logs gaan kijken, etc .... ?
Als het van de ene dag op de andere niet meer werkt, dan ligt het hoogstwaarschijnlijk niet aan je code (als je daar niets aan veranderd hebt).
Zowiezo heeft het geen zin om hier een lap code te posten, en dan te verwachten dat iemand anders het hier voor jou gaat debuggen.... Ik denk dus dat we wat meer info nodig hebben om jou te kunnen helpen.
Mijn code (is C# code, let niet op de PHP tags er omheen, dit was alleen om de highlighting op het forum in te schakelen):
syntax highlighting kan je ook doen door je code als volgt te posten:

[code=C#]
public void Melp() {}
[ /code]

edit:
edit doen ipv quote is meestal geen goed idee ... :X

https://fgheysels.github.io/